【问题标题】:Link to Start ClickOnce or MSI-Installed Application链接到启动 ClickOnce 或 MSI 安装的应用程序
【发布时间】:2015-09-23 17:07:34
【问题描述】:

我正在开发的一个应用程序提出了一个有趣的要求。我们支持大多数客户的 ClickOnce 部署和需要更多控制安装过程的客户的 MSI (WiX) 包的传统部署。

但是,无论应用程序是如何安装的,当用户单击我们网站上的“启动”按钮时,我都需要它来启动应用程序。如果它已经通过当前用户的 MSI 包安装,它应该启动当前安装的副本;否则,它应该安装/更新/运行 ClickOnce 包。我想我可以让 ClickOnce 版本启动安装 MSI 的版本(如果存在),然后快速关闭。 This question 让我希望可以通过简单地使两个应用程序具有相同的 GUID 来实现,但我不确定如何做到这一点,或者这是否是一个好主意。

创建一个启动 ClickOnce 应用程序的链接很简单:

<a href="/path/to/myapp.application">Launch</a>

制作一个在 MSI 注册的自定义 protocol handler 并不难:

<a href="myapp:launch">Launch</a>

但是 doesn't seem possible 让 ClickOnce 应用程序能够处理这个新协议,即使我解决了这个问题,这对于没有安装任何一个的新客户来说都不起作用。

是否有一种相对简单的方法来制作单个 Web 链接以启动安装 MSI 的应用程序或 ClickOnce 应用程序?

【问题讨论】:

  • 在我看来,您似乎不太可能从 Web 浏览器在用户计算机上启动应用程序。他们中的大多数都有特定的保护措施来防止这种事情发生!你需要走出沙箱,而且 IE 的完整性级别也很低。您可能需要安装一个用户运行的应用程序,该应用程序可以嵌入浏览器窗口并在本地计算机上激活应用程序。而且它与 guid 无关 - ClickOnce 和 MSI 完全不同且不相关。
  • @PhilDW 有几种方法可以让您从 Web 浏览器启动应用程序,当然,它们通常需要用户额外确认或其他步骤。我已经添加了一些关于这个主题的更多想法。
  • 我会亲自转储点击一次的故事。
  • @ChristopherPainter 不幸的是,我们在这里处理了一些遗留问题。此应用程序替换了使用 ClickOnce 部署的较旧的第 3 方工具。客户知道它并且有点喜欢它。新应用程序可以为客户提供更多的权力和控制权,让 IT 部门足够了解如何在他们的网络上安装和配置它,但大多数最终用户仍会期待“点击此处”按钮。

标签: .net windows deployment windows-installer clickonce


【解决方案1】:

我在 Silverlight 应用程序中使用了这种技术来调用本地应用程序。不过,我们必须签署 XAP 并让它信任它才能工作。我不确定它在普通的 HTML 页面上是如何工作的。

Registering an Application to a URI Scheme

【讨论】:

  • 是的,我考虑过,但它似乎不适用于 ClickOnce,或者尚未安装任何版本的用户。我或许可以使用 Silverlight(或类似工具)来检查用户的系统,以查看是否安装了 MSI 版本,如果未安装,请将链接更改为指向 ClickOnce 应用程序。
【解决方案2】:

我认为你是在倒退。如果要调用 ClickOnce 应用程序(检查更新并运行应用程序),可以执行 process.start(ieexplore.exe, "http://myserver.mydomain.com/myapplication/whatever/myapp.application") (使用实际 ClickOnce 应用程序的 URL)。与其让 ClickOnce 应用程序调用 msi,不如反过来让 msi 调用 ClickOnce 应用程序?或者写一些东西来检查运行/安装哪个并调用它?

【讨论】:

    猜你喜欢
    • 2011-01-03
    • 2011-10-01
    • 2021-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-07
    相关资源
    最近更新 更多