Как выполнить файл, установленный модулем слияния?

Я использую 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. Однако я действительно хочу выполнить файл, установленный модулем слияния. Как мне это сделать?

Я могу внести изменения в модуль слияния, если это поможет.


person Juozas Kontvainis    schedule 22.09.2009    source источник


Ответы (2)


Я изменил действие, чтобы решить мою проблему:

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

Вы также можете открыть модуль слияния в Orca или MSI после завершения сборки (т. е. модуль слияния был объединен) и найти File.Id. Затем используйте File.Id в CustomAction.

В идеале, хотя MSI не должен ссылаться на содержимое внутри модуля слияния, поскольку модули слияния должны быть независимыми. Я понимаю, что не всегда так получается. :)

person Rob Mensching    schedule 22.09.2009
comment
Это не сработало. Я попытался получить доступ к файлу, используя декорированный (с GUID в конце, скопированный из Orca) идентификатор файла, я попытался переместить действие в модуль слияния, а затем сослаться на это действие, используя декорированный идентификатор, но компилятор WIX не сотрудничал. - person Juozas Kontvainis; 23.09.2009
comment
Если вы поместите действие в модуль слияния, вы не добавите его декорации. Компилятор сделает это за вас. - person Rob Mensching; 24.09.2009