我们使用CD安装程序部署了ClickOnce应用程序并设置了更新URL(安装URL为空)
在Windows 7和Windows 8上,自动更新功能(我们通过System.Deployment使用编程方法)最终导致TrustNotGrantedException并且“用户拒绝向应用程序授予所需权限”
症状与Clickonce full trust app update failing with TrustNotGrantedException on Windows 8非常相似,但所提供的解决方案没有任何区别。
使用CD安装程序时,ClickOnce提示警告屏蔽为本地安装的绿色,是否无法从Web下载更新?
我们遇到了同样的问题,最终使用了InPlaceHostingManager Class。它用于安装或更新ClickOnce部署。 GetManifestAsync()
发射了GetManifestCompleted
事件,它为您提供版本号。然后你可以调用DownloadApplicationAsync()
并处理DownloadApplicationCompleted
事件。到目前为止,这个工作并没有抛出TrustNotGrantedException。
我们也尝试了解决方法,但没有解决所有问题。如果您在“受信任的发布者”证书存储中安装Authenticode证书(仅限公钥),则可以在不使用ApplicationDeployment.CheckForDetailedUpdate
的情况下调用TrustNotGrantedException
。
虽然我们在更改为新的UpdateLocation时遇到了类似的问题,但这对我们来说只是一个问题。假设您没有更改默认的trust prompt behavior,您的初始CD安装应该提示用户(在安装时)将应用程序权限提升为FullTrust。
如果应用程序配置为从Web或网络位置检查更新并且有更新的版本可用,则原始安装可以接收Internet或Intranet区域的权限,而不是完全信任权限。为防止提示用户,系统管理员可以指定ClickOnce部署策略,该策略将特定应用程序发布者定义为可信源。
(参考:VS2015 Securing ClickOnce Applications)
我从未在Trusted Application Development Overview中找到足够的文档,但我相信当您尝试从MyComputer区域(CD安装)转到Internet区域时,信任管理器认为必须提示用户重新确认FullTrust权限提升。似乎信任提示仅在启动.application文件时发生,因此您在应用程序运行时错过了机会。
FWIW - 我们解决方法的其他问题与从CD安装切换到Web安装后的Win10上的任务栏固定有关。我们的行为类似于this,但这些解决方案都没有帮助。