Wix: Может ли выполнить пользовательское действие перед InstallValidate? - PullRequest
5 голосов
/ 09 сентября 2011

Во время процесса удаления программа установки отображает следующее сообщение:

"The setup must update files or services that cannot be updated while the system is running. If you choose to continue, a reboot will be required to complete the setup."

Я думаю, это связано с тем, что установленная служба все еще работает во время удаления. Итак, я пытаюсь написать собственное действие, чтобы остановить его. Но, похоже, не работает.

Если я установлю действие как Execute='deferred' Impersonate='no', это позволит мне выставить действие только между InstallInitialize и InstallFinalize, поэтому я должен установить его как "немедленный".

<CustomAction BinaryKey='CustomActions' Id='StopService' DllEntry='StopService' Execute='immediate' />

<Custom Action="StopService" Before="InstallValidate">REMOVE="ALL"</Custom>

Также обратите внимание, что по некоторым причинам я должен использовать настраиваемое действие для установки службы вручную, а не использовать Wix. Вот почему я пытаюсь удалить его вручную.

1 Ответ

4 голосов
/ 09 сентября 2011

Вы не можете запустить пользовательское действие с повышенными правами до InstallInitialize. Если бы вы установили службу в обычном режиме, MSI позаботилась бы об ее остановке и не показывала бы сообщение об использовании.

...