链接到启动ClickOnce或MSI安装的应用程序

时间:2015-09-23 17:07:34

标签: .net windows deployment windows-installer clickonce

我正在处理的其中一个应用程序出现了一个有趣的要求。我们支持大多数客户的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>

然而,{/ 3}}使ClickOnce应用程序能够处理这个新协议,即使我解决了这个问题,这对于那些没有安装过的新客户来说也不会起作用

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

2 个答案:

答案 0 :(得分:0)

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

Registering an Application to a URI Scheme

答案 1 :(得分:0)

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