如何执行合并模块安装的文件?

时间:2009-09-22 12:21:48

标签: wix merge-module

我正在使用WIX并成功使用自定义操作在安装程序结束时执行已安装的文件,如下所示:

<CustomAction Id="LaunchAfterInstall" FileKey="foobar.exe" ExeCommand="parameters" Execute="immediate" Impersonate="yes" Return="asyncNoWait" />

<Property Id="WIXUI_INSTALLDIR" Value="INSTALLLOCATION"/>

<UIRef Id="WixUI_InstallDir" />
<Property Id="WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT" Value="Launch Foobar." />
<UI>
    <Publish Dialog="ExitDialog" Control="Finish" Order="1" Event="DoAction" Value="LaunchAfterInstall">WIXUI_EXITDIALOGOPTIONALCHECKBOX</Publish>
</UI>

当foobar.exe位于同一个wxs文件的组件中时,这很有效。但是我真正想要的是执行由合并模块安装的文件。我该怎么做?

我可以在合并模块中进行更改,如果这有帮助的话。

2 个答案:

答案 0 :(得分:0)

我改变了行动来解决我的问题:

<CustomAction Id="LaunchAfterInstall" Directory="INSTALLLOCATION" ExeCommand="[INSTALLLOCATION]\foobar.exe" Execute="immediate" Impersonate="yes" Return="asyncNoWait" />

答案 1 :(得分:0)

您也可以在构建完成后打开Orca或MSI中的合并模块(即合并模块已合并)并查找File.Id.然后使用CustomAction中的File.Id。

理想情况下,虽然MSI不应引用合并模块内的内容,因为合并模块应该是独立的。我很欣赏它并不总是这样。 :)