У меня есть однократное приложение, которое правильно подписано, правильно настроено и само устанавливает без каких-либо проблем.
Он настроен на запуск в автономном режиме, но устанавливается с определенного URL-адреса, и если я загружу и запустил setup.exe, он установит обновления.
Итак, это в основном все работает... кроме того, что я не могу распечатать номер версии или вызвать обновление из кода. Если я попытаюсь, я получаю страх: "Идентификатор приложения не установлен".
2017-01-10 13:43:14.8367 ERROR System.Deployment.Application.InvalidDeploymentException: Application identity is not set.
at System.Deployment.Application.ApplicationDeployment.get_CurrentDeployment()
at LibDataAgent.Internal.Services.UpdateService.Deployment() System.Deployment.Application.InvalidDeploymentException: Application identity is not set.
at System.Deployment.Application.ApplicationDeployment.get_CurrentDeployment()
at LibDataAgent.Internal.Services.UpdateService.Deployment()
Я не работаю в режиме отладки или использую отладочную сборку.
Итак, вот мой реальный вопрос:
Как, определяет ли код щелчка в System.Deployment.Application
во время выполнения определение того, что является идентификатором приложения?
Итак, в этом есть много других вопросов, но, пожалуйста, не закрывайте это как дубликат, насколько я могу судить, это не одно.
Вот список вещей, на которые я не хочу отвечать:
- Как подписать приложение click-one.
- Как установить идентификатор приложения при его создании.
- Как найти, где установлено приложение для кликов.
- Как сделать работу с кликом одним приложением во время отладки.
- Как проверить наличие обновлений с помощью
ApplicationDeployment
.
Просто очень ясно, что именно делает приложение с щелчком мыши во время выполнения, которое позволяет определить идентификатор приложения.
Help!
Примечания
Мои (до сих пор бесплодные) попытки решить эту проблему дали следующие заметки:
Я уверен, что это связано с тем, как запускается приложение, поскольку выполнение приложений из командной строки никогда не срабатывало с кликом; но выполнение одного и того же приложения из меню "Пуск" будет правильно возвращать IsNetworkDeployed
как true.
Однако я не смог определить, что такое техническая разница, или почему вы правильно устанавливаете установку, а другая нет. (или действительно, почему это конкретное приложение не работает из меню "Пуск" , когда другие не имеют очевидной разницы).
Вещи, которые я пробовал, которые не имеют значения, включают:
- рабочий каталог для приложения.
- запуск приложения .exe напрямую или через оболочку
- запуск приложения из нового ярлыка
Существует некоторая магия для "MyApplication.appref-ms", которая входит в меню "Пуск" ; appref-ms - это всего лишь URL-адрес пути установки:
http://s3-ap-southeast-1.amazonaws.com/blahblah/Dev/MyApplication.application#MyApplication.application, Culture=neutral, PublicKeyToken=fdasdfsafads, processorArchitecture=x86
... который каким-то образом запускает экземпляр приложения "click once aware". Но как?