Certificate ClickOnce设置行为与编程行为不同
如果我运行应用程序的setup.exe,并且证书不是存储中的受信任证书。我得到以下对话框 只要用户点击安装,一切都很好 现在我有了另一个应用程序Portal,它启动ClickOnce应用程序。 已安装门户并已接受证书(不同的pfx文件) 现在,当门户通过代码启动应用程序1时,不会显示上面的提示(因为它已经在安全上下文中运行了?)。大部分代码来自微软的网站 现在,当应用程序1运行时,会出现错误,即用户拒绝了权限。我理解这是因为用户从未单击过上述警告,应用程序1没有它需要的权限。从Microsoft网站: 如果应用程序使用受信任的应用程序部署,则公共语言运行库 (CLR)信任管理器检查部署清单以确定其是否包含 有效的信任许可证。如果部署清单不包含有效的信任 许可证,ClickOnce停止安装并抛出TrustNotGrantedException。 更新将永远不会显示提示,询问用户是否要授予 运行的应用程序权限 所以我还有一些选择Certificate ClickOnce设置行为与编程行为不同,certificate,clickonce,Certificate,Clickonce,如果我运行应用程序的setup.exe,并且证书不是存储中的受信任证书。我得到以下对话框 只要用户点击安装,一切都很好 现在我有了另一个应用程序Portal,它启动ClickOnce应用程序。 已安装门户并已接受证书(不同的pfx文件) 现在,当门户通过代码启动应用程序1时,不会显示上面的提示(因为它已经在安全上下文中运行了?)。大部分代码来自微软的网站 现在,当应用程序1运行时,会出现错误,即用户拒绝了权限。我理解这是因为用户从未单击过上述警告,应用程序1没有它需要的权限。从Microsof
- 获取有效的证书。现在对于这些应用程序,我们无法证明两年大约400美元的成本是合理的。我正在考虑创建我们自己的证书,但是,将证书部署到内部客户机上是网络团队可以接受的事情。将证书添加到整个公司的受信任根目录中所涉及的内容
- 或者以某种方式检测应用程序是否已安装。如果没有,请调用setup.exe。如果是这样,请运行现有的部署代码。如何确定应用程序是否已安装
- 所以我解决这个问题的方法是查看应用程序是否已经安装。如果是,则运行.application文件,如果不是,则运行setup.exe文件,就像用户单击它一样
If (Not System.IO.File.Exists(String.Format(app.ApplicationLaunchDirectory, Environment.GetFolderPath(Environment.SpecialFolder.UserProfile)))) Then
Process.Start(app.ApplicationSetupDirectory)
Else
Dim deploymentUri As New Uri(app.ApplicationLocation)
inPlaceHosting = New InPlaceHostingManager(deploymentUri, False)
appInfo = app
pf.SetValues("Starting Application", 0)
pf.Show()
inPlaceHosting.GetManifestAsync()
End If
在哪里
ApplicationLaunchDirectory={0}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\App\App.appref-ms
ApplicationSetupDirectory=\App\setup.exe
ApplicationLocation=\App\App.application
ApplicationLaunchDirectory = {0}\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\App\App.appref-ms
ApplicationSetupDirectory = <NetworkDrive>\App\setup.exe
ApplicationLocation = <NetworkDrive>\App\App.application