我在 VS 2017 中创建了一个使用 ClickOnce 安装的 WPF 应用程序。将解决方案部署到网络位置后,我可以通过访问 .application 链接在我的 64 位 Windows 10 计算机上安装。
但是,该应用程序安装后无法在我的计算机上运行。当我尝试从“开始”菜单使用 .appref-ms 快捷方式时,没有任何反应。我添加了代码以在应用程序启动时启动调试器,但它没有被命中。从此处运行应用程序时,我没有看到任何内容记录在 clickonce 日志中。我已在注册表中将日志记录设置为“详细”。
如果我尝试从 %userprofile%\AppData\Local\Apps\2.0\ 安装位置运行应用程序,它会正常运行并启动调试器。但是,我无法使用此位置,因为它将使用此位置的配置文件,而不是存储在 %userprofile%\AppData\Local\ 中的配置,这允许新版本继续使用相同的配置。对于用户来说也很不方便。
如果我返回到服务器上的 .application 链接,我可以在部署新版本时安装它们,但它仍然不会启动应用程序或记录运行应用程序时的任何问题。
.appref-ms 看起来像这样,Launcher.manifest 确实存在于安装位置,以及清单中列出的文件:
file://192.168.10.11/Projects/Launcher.application#Launcher.application, Culture=neutral, PublicKeyToken=0000000000000000, processorArchitecture=msil
如何查找 ClickOnce 快捷方式的问题?
编辑:有人提到查看事件查看器,我发现了一个 SecurityException,该异常仅在从快捷方式运行时发生。 Debugger.Launch() 是分部类的 MainWindow 构造函数中的第一行,但它没有被命中。以下是事件查看器中的异常:
Application: applaunch.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: System.Security.SecurityException
at System.Security.CodeAccessSecurityEngine.Check(System.Object, System.Threading.StackCrawlMark ByRef, Boolean)
at System.Security.CodeAccessPermission.Demand()
at MS.Internal.SecurityHelper.DemandUnmanagedCode()
at System.Windows.Window..ctor()
at Launcher.MainWindow..ctor()