2009-09-22 50 views
0

我使用維克斯和已經成功地使用自定義操作在安裝程序的這樣結束時執行安裝文件:如何執行合併模塊安裝的文件?

<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

我改變了行動,以解決我的問題:

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

你也可以打開逆戟鯨或你的MSI合併模塊構建完成後(即合併模塊已經合併的)和查找File.Id.然後使用CustomAction中的File.Id。

儘管MSI不應該引用合併模塊內的內容,因爲合併模塊應該是獨立的。我感謝它並不總是這樣。 :)

+0

這沒有奏效。我嘗試使用「裝飾」(最終GUID,從Orca複製)文件ID訪問文件,我試着將動作移動到合併模塊,然後使用「裝飾」ID引用該動作,但WIX編譯器沒有合作。 – 2009-09-23 10:14:14

+0

如果您將操作置於合併模塊中,則不會將其添加到裝飾中。編譯器會爲你做到這一點。 – 2009-09-24 03:15:57