Утилита Wix: расширение CloseApplication, похоже, не работает - PullRequest
4 голосов
/ 05 июня 2010

Я пытаюсь закрыть процесс перед удалением с помощью Wix. Я подтвердил, что это работает, пока есть видимое окно, но если нет видимого окна (что происходит в большинстве случаев с этим приложением, поскольку это приложение в системном трее), деинсталлятор просто зависает, и в конечном итоге продолжается удаление, оставляя процесс запущенным.

Согласно этому сообщению на форуме , похоже, что в прошлом у Wix возникали проблемы с закрытием свернутых приложений, поэтому мне интересно, связано ли это?

Любые предложения относительно того, что еще я могу сделать, чтобы убедиться, что процесс остановлен? Можно ли каким-то образом попытаться перехватить сообщение в моем приложении с помощью API Win32?

Вот объявление CloseApplication:

<util:CloseApplication Id="CloseApp" CloseMessage="yes" Target="App.exe" RebootPrompt="yes" />

А вот и пользовательское действие:

<Custom Before="InstallInitialize" Action="WixCloseApplications">REMOVE = "ALL"</Custom>

Ответы [ 3 ]

4 голосов
/ 15 февраля 2011

Похоже, что вы планируете пользовательское действие WixCloseApplications перед операцией установки. То, как работает настраиваемое действие, - это запланированное отложенное действие, которое фактически закрывает приложения. Он не может выполнять эту работу, если это не происходит во время транзакции (After="InstallInitialize").

Исправление, вероятно, довольно легко. Удалите элемент Custom/@Action="WixCloseApplications".

1 голос
/ 25 сентября 2015

Сначала не забудьте сослаться на WixUtilExtension.dll сборку. Также проверьте, содержит ли элемент Wix определение UtilExtension пространство имен:

<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">

Я заметил, что вы должны изменить свое настраиваемое действие, которое будет выполняться перед InstallInitialize.

<Custom Before="InstallInitialize" Action="WixCloseApplications">REMOVE = "ALL"</Custom>

Если вы применяете эти изменения, а расширение CloseApplications не работает, попробуйте зарегистрировать процесс установки, используя

msiexec /i MyApplication.msi /l*v MyLogFile.txt
0 голосов
/ 30 января 2017

Я тоже сталкивался с этой проблемой. Изменение атрибута «До» на «InstallValidate» сработало для меня.

<Custom Before="InstallValidate" Action="WixCloseApplications"/>
...