【发布时间】:2012-02-03 10:05:36
【问题描述】:
我的目标是真正实现一键启动我的 ClickOnce 应用程序(或者我猜是两次)。该应用程序有一些需要安装的先决条件。 Microsoft 提供的确保安装它们的正常方法包括让用户决定他是否具有先决条件,然后下载和安装“setup.exe”,该“setup.exe”会安装它们并运行 ClickOnce 应用程序。这包括下载 EXE 文件(单击一次)、运行它(单击两次),然后在安装必备组件后,再次单击以运行 ClickOnce 应用程序。
我正在尝试将此过程减少到一两次点击:
- 单击我网站上指向 ClickOnce .application 文件的链接。
- 再次点击运行。
我制作了另一个 ClickOnce 应用程序,其中包括一个 setup.exe。它检查是否安装了先决条件,如果是,它会自动运行其他 ClickOnce 应用程序。如果没有,它会运行包含的 setup.exe,然后运行其他 ClickOnce 应用程序。
我的问题是,当我尝试从这个应用程序运行另一个 ClickOnce 应用程序时,它只是打开我的网络浏览器并下载 .application 文件而不运行它。
我正在尝试使用以下内容从我的 C# 代码中启动 ClickOnce 应用程序:
Process.Start(ApplicationURL);
我只是想让它在 ApplicationURL 自动启动应用程序。有没有办法跳过我看到的浏览器参与?
(我的问题与 Stack Overflow 问题非常相似Run a ClickOnce application from a webpage without user action)。
【问题讨论】:
-
您的默认浏览器是什么?你试过了吗:
Process.Start("iexplore.exe", ApplicationURL)? -
好的,我刚刚找到了我自己问题的答案。问题是我的默认浏览器是 google chrome,它不太了解如何处理 clickOnce 应用程序。我将代码更改为: ProcessStartInfo startInfo = new ProcessStartInfo("Iexplore"); startInfo.Arguments = 应用程序 URL; Process agentStudio = Process.Start(startInfo);现在它使用 Internet Explorer 启动应用程序,并且该应用程序现在真的可以作为“一键式”应用程序运行。
-
感谢 M. Babcock,在您回复时独立发现!
-
如果您要做的只是设置文件名和参数,则无需实例化
ProcessStartInfo对象。这就是 Process.Start(string, string) 重载的用途。 -
你的路径是什么样的?我可以通过使用
Process.Start(<path to .application file>);从另一个应用程序启动一个 ClickOnce 应用程序。那就是使用 UNC 路径 (\\server\share\folder\program.application)