我有一个单击一次的应用程序,它已正确签名、正确配置并自行安装,没有任何问题。
它设置为脱机运行,但从特定 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
,在运行时,确定应用程序身份是什么?
因此,围绕此还有很多其他问题,但请不要将其作为重复项关闭,据我所知,它不是一个。
这是我列出的东西do not想要以下问题的答案:
- How to sign一键式应用程序。
- How to set您构建时的应用程序标识。
- 怎么找where单击一次的应用程序已安装。
- 如何使单击一次的应用程序同时运行调试.
- 如何使用检查更新
ApplicationDeployment
.
就很直白的说,exactly单击一次的应用程序有什么作用,在运行时让它确定应用程序身份。
Help!
Notes
我(迄今为止没有结果)尝试解决这个问题得到了这些笔记:
我确信这与应用程序的启动方式有关,因为从命令行执行应用程序从来没有使用过单击一次;但从开始菜单执行相同的应用程序将正确返回IsNetworkDeployed
是真的。
但是,我无法确定技术差异是什么,或者为什么一个能够正确检测到安装,而另一个却不能。 (或者事实上,为什么这个特定的应用程序不能从开始菜单运行,而其他没有明显区别的应用程序却可以)。
我尝试过的没有什么区别的事情包括:
- 应用程序的工作目录。
- 直接或通过 shell 启动应用程序 .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
...哪个somehow启动应用程序的“单击一次感知”实例。但如何呢?