MSI - не требуется закрытие приложений - PullRequest
1 голос
/ 08 февраля 2011

Как я могу изменить свой MSI, чтобы он не требовал закрытия ВСЕХ других работающих приложений? Забавно, если мое приложение закрывается вручную до закрытия деинсталляции, оно не будет запрашивать закрытие Outlook, Firefox и т. Д.

Ответы [ 3 ]

2 голосов
/ 09 февраля 2011

Подсказка автоматически отображается действием InstallValidate, поэтому вы не можете изменить поведение. Вместо этого вы можете предотвратить это, используя настраиваемое действие, которое закрывает ваше приложение перед InstallValidate.

Обычно это делается отправкой WM_CLOSE в главное окно приложения (приложение должно обработать это сообщение, чтобы это работало).

Другие приложения (Outlook, Firefox и т. Д.) Также отображаются в приглашении, поскольку установщик Windows не очень хорошо обнаруживает запущенные приложения. Он в основном проверяет файловые зависимости (например, если несколько приложений используют одни и те же библиотеки DLL или среды выполнения), поэтому могут возникать ложные срабатывания.

1 голос
/ 08 февраля 2011

MSI будет автоматически обрабатывать заблокированные файлы, используя сценарий перезагрузки.Запрос на закрытие приложений - это попытка предотвратить перезагрузку.Вы можете отменить перезагрузку, но тогда файл фактически не будет заменен до перезагрузки.

Какое именно поведение вы ищете?

Кстати, рекомендуемое чтение:

FilesInUse Dialog

Оттуда перейдите по ссылке на InstallValidate и перезагрузку системы.

0 голосов
/ 25 июня 2014

Как писал здесь mrnx, эта проверка запуска приложений происходит во время InstallValidate . Но останавливать приложения до этого не очень хорошая идея. Другие проверки могут быть неудачными, и MSI должна иметь возможность восстановить систему до состояния, в котором она находилась до запуска MSI, включая запущенные приложения.

Кроме того, эти проверки выполняются как "немедленные", а не "отложенные".

Настраиваемые действия IMO для остановки приложений должны выполняться непосредственно перед " RemoveFiles " и " deferred ", чтобы убедиться, что он запускается как администратор.

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

<Property Id="MSIRESTARTMANAGERCONTROL" Value="Disable" />

В моем понимании все равно будет возвращаться к диалогу FilesInUse во время RemoveFiles , если они все еще будут использоваться в то время.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...