Я почесываю голову в этом вопросе и провел некоторое время, изучая его. Каждый вопрос, который я рассматривал на основе этой проблемы, выглядит как отладка (у меня также есть эта проблема с отладкой). Однако это не причина этого.«Идентификация приложения не задана» с помощью ClickOnce
В моем приложении я дал пользователю возможность создать ярлык, чтобы приложение запускалось автоматически при запуске (я нашел это гораздо проще, чем редактирование реестра).
string copyPath = Environment.GetFolderPath(Environment.SpecialFolder.Startup) + "\\";
using (StreamWriter writer = new StreamWriter(copyPath + "\\" + "ZApp.url"))
{
string app = System.Reflection.Assembly.GetExecutingAssembly().Location;
writer.WriteLine("[InternetShortcut]");
writer.WriteLine("URL=file:///" + app);
writer.WriteLine("IconIndex=0");
string icon = app.Replace('\\', '/');
writer.WriteLine("IconFile=" + icon);
writer.Flush();
}
Этот код отлично работает. Однако всякий раз, когда приложение проверяет наличие обновления в фоновом режиме, оно выдает ошибку Application identity is not set
.
Это код, который я использую для проверки обновления:
ApplicationDeployment deploy = ApplicationDeployment.CurrentDeployment; //<- Error thrown here
UpdateCheckInfo update = deploy.CheckForDetailedUpdate();
Опять же, он прекрасно работает, если я запустить приложение, используя иконку, ClickOnce места на моем рабочем столе, но не большое, если я использую значок ярлыка, который мой код создает в папке автозагрузки. Есть ли способ для меня программно обойти это?
Не могли бы вы проверить, действительно ли 'ApplicationDeployment.IsNetworkDeployed' истинно, строка перед исключением выбрасывает? – Herdo
возвращает false, когда мое приложение развернуто, оно доступно онлайн или офлайн – Andy
Aha. Я понимаю вашу проблему. Но я не понимаю вашего подхода. С моей точки зрения вы используете ClickOnce для чего-то, для которого он не предназначен. Вы можете попытаться использовать mage [cmd line] MageUI для создания лучшего «ярлыка». пакет. –