2011-06-07 107 views
4

我正在为产品创建msi-installer,安装后需要在浏览器中启动web网址。我使用WIX 3.5创建安装程序(但这可能并不重要)。 我在http://www.tramontana.co.hu/wix/lesson5.php#5.2找到的例子不起作用 - 安装程序日志说的是Windows安装程序自定义操作错误1631

“操作结束15:27:30:LaunchBrowser。返回值1631.”。

我在互联网上看到很多关于这个问题的文章,但没有人提供解决方案(有人发现多语言问题,有人联系微软解决这个问题)。

我只能猜测问题是在Windows 7的安全性(我遇到问题)的某个地方。也许Windows安装程序被禁止启动exe文件(我尝试了许多其他exe文件的例子,但都有相同的结果)。

有没有人有一个通用的解决方案?

+0

您正在使用哪种类型的自定义操作?您是否尝试过使用ShellExecute启动URL的简单EXE? – 2011-06-07 20:07:26

+0

我与在异步模式下运行的类型50自定义操作(不等待完成)有同样的问题,所以它实际上是一个242类型。它曾经在Server 2008 R2之前的Windows版本中工作 – 2012-10-22 22:39:30

回答

1

我想这个问题真的与UAC安全。 为了让自定义锕我们应该让递延管理权限,就像这样:

<CustomAction Id="LaunchBrowser" Directory="TARGETDIR" Impersonate="no" Execute="deferred" ExeCommand="[BrowserExePath] [LaunchingUrl]" Return="check"/> 

,我会强烈建议this blog post有关自定义操作 - 它彻底改变了我对他们的看法。

+0

只有在执行操作时才推迟更改*我相信这是设置Impersonate =“no”,实际上允许更改,因为它使CA以系统帐户运行。另外我发现1631错误的一个重要原因是双引号的错误使用。某些字符串不应该被双引号(例如要运行的EXE的路径),而其他字符串可能需要双引号(例如,放入ExeCommand的参数)。 – donovan 2012-12-06 03:42:31

+0

不,只有被执行的操作才是获得提升权限的唯一操作。您应该阅读我在我的回答中推荐的博客文章,以了解这一点以及其他许多自定义操作的细微差别 – 2012-12-06 10:45:39

相关问题