【发布时间】: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