У меня есть программа установки с WiX. Когда он будет завершен, он запускает приложение, которое вводит некоторый код в процессе проводника.WiX uninstall - закрыть приложение перед перезагрузкой
В настоящее время, когда я удаляю, перезагружается менеджер и предлагает закрыть приложение и проводник. Вместо этого я хочу закрыть приложение вручную (это выполняется путем повторного запуска его с помощью -exit в командной строке). У меня есть пользовательское действие, которое это делает.
Вот что я пытался до сих пор:
<CustomAction ExeCommand="-exit" FileKey="MyApp.exe" Id="CloseMyApp" Impersonate="yes" Return="ignore" />
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="CloseMyApp" Before="RemoveFiles" />
</InstallExecuteSequence>
Это не работает. Действие выполняется после сеанса Restart Manager. Таким образом, программа Restart Manager появляется и просит закрыть мое приложение и Explorer. Действие выполняется позже, но к тому времени приложение уже исчезло.
Итак, я попытался это:
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallInitialize" />
<Custom Action="CloseMyApp" Before="RemoveExistingProducts" />
</InstallExecuteSequence>
Это также не работает. Действие сделано слишком поздно. Я также получаю «предупреждение LGHT1076: ICE63: некоторые действия происходят между InstallInitialize и RemoveExistingProducts».
В основном - как выполнить мое пользовательское действие во время удаления и перед сеансом Restart Manager?
Я предполагаю, что если я использую Impersonate = "no", он может работать в нужное время, однако это не вариант. Это связано с тем, что новый процесс должен запускаться для того же пользователя, что и процесс, который должен закрываться, потому что он просматривает свое окно и отправляет сообщения. Это намного сложнее, если процессы принадлежат разным пользователям.
Любые идеи?