我的目标是真正实现单击一次(我猜是两次)启动我的 ClickOnce 应用程序。该应用程序有一些需要安装的先决条件。 Microsoft 提供的确保安装它们的正常方法包括让用户决定他是否具备先决条件,然后下载并安装一个“setup.exe”来安装它们并运行 ClickOnce 应用程序。这包括下载 EXE 文件(单击一次)、运行它(单击两次),然后在安装先决条件后,再次单击以运行 ClickOnce 应用程序。
我正在尝试将此过程减少到一两次点击:
- 单击我网站上指向 ClickOnce .application
文件的链接。
- 再次点击运行。
我制作了另一个 ClickOnce 应用程序,其中包含一个 setup.exe。它检查是否安装了先决条件,如果安装了,它会自动运行其他 ClickOnce 应用程序。如果没有,它会运行包含的 setup.exe,然后运行其他 ClickOnce 应用程序。
我的问题是,当我尝试从这个应用程序运行另一个 ClickOnce 应用程序时,它只是打开我的 Web 浏览器并下载 .application 文件而不运行它。
我正在尝试使用以下内容从我的 C# 代码中启动 ClickOnce 应用程序:
Process.Start(ApplicationURL);
我只是想让它在 ApplicationURL 自动启动应用程序。有没有办法跳过我看到的浏览器参与?
(我的问题与 Stack Overflow 问题非常相似 Run a ClickOnce application from a webpage without user action )。
最佳答案
正如评论中所指出的,您可以启动 iexplore.exe
进程来启动 ClickOnce 应用程序,而不依赖于默认浏览器。您还可以使用 dfshim.dll
以与 Windows 资源管理器启动它相同的方式启动 ClickOnce 应用程序。
Process.Start("rundll32.exe", "dfshim.dll,ShOpenVerbApplication " + ApplicationURL);
网上还有一些其他文章讨论使用这个策略,但我没有找到任何关于 dfshim.dll、ShOpenVerbApplication 的官方文档。
- Another Stack Overflow question提到使用自定义 .exe 安装 .NET Framework,然后通过 ShOpenVerbApplication 启动 ClickOnce 应用程序。
- 斯科特·汉塞尔曼 discusses ShOpenVerbApplication作为有关 Firefox 和 ClickOnce 的帖子中具有 application/x-ms-application MIME 类型的文件的默认文件映射。
更新
正如另一个 Stack Overflow 问题提到的,您还可以使用 dfshim.dll
的 LaunchApplication
命令,即 documented on Microsoft's site .但是,该命令在某些旧版本的 .NET Framework 中不可用。
关于c# - 从另一个 ClickOnce 应用程序启动 ClickOnce 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8744927/