Довольно просто, вам нужно два отдельных действия, чтобы «установить» WixShellExecTarget
- они будут запускаться в разное время.
Сначала вы настроите действия, которые будут выполняться.
<CustomAction Id="SetExec1" Property="WixShellExecTarget" Value="[#Application.exe]" />
<CustomAction Id="SetExec2" Property="WixShellExecTarget" Value="[CONFIGWIZARDURL]" />
<CustomAction Id="DoExec" BinaryKey="WixCA" DllEntry="WixShellExec" Impersonate="yes" Return="ignore" />
Теперь вы хотите запланировать выполнение этих действий, в этом примере я привязываю все действия к кнопке Готово в диалоговом окне окончательной установки. Поскольку мы публикуем элемент Control
, WiX автоматически установит Publish/@Order
на единицу больше, чем в предыдущем событии.
Кроме того, все эти действия должны выполняться только во время установки, поскольку этот же диалог отображается при удалении и ремонте.
Скорее всего, вы также захотите установить их в зависимости от состояния ваших флажков, если выполнение является необязательным.
<UI>
<!-- Publish set/do for first action -->
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="SetExec1">
<![CDATA[NOT Installed]]>
</Publish>
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="DoExec">
<![CDATA[NOT Installed]]>
</Publish>
<!-- Publish set/do for second action -->
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="SetExec2">
<![CDATA[NOT Installed]]>
</Publish>
<Publish Dialog="ExitDialog" Control="Finish" Event="DoAction" Value="DoExec">
<![CDATA[NOT Installed]]>
</Publish>
</UI>