我正在使用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文件的组件中时,这很有效。但是我真正想要的是执行由合并模块安装的文件。我该怎么做?
我可以在合并模块中进行更改,如果这有帮助的话。
答案 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不应引用合并模块内的内容,因为合并模块应该是独立的。我很欣赏它并不总是这样。 :)