Параметр командной строки WiX без пользовательского интерфейса «/ quiet» убивает запущенный процесс - PullRequest
2 голосов
/ 02 декабря 2011

Я создал установочный комплект без пользовательского интерфейса, используя Wix для моего приложения (здесь он называется «XYZ»).

Если я дважды щелкну MSI во время работы XYZ.exe, он уведомит меня о том, что процесс блокирует файл: я могу остановить процесс блокировки или прервать установку. Это нормально: я как пользователь могу решить, что делать.

Но когда я запускаю тот же MSI из командной строки,

msiexec / i XYZ.msi / quiet / norestart

если будет обнаружено, что XYZ.exe работает, он будет убит. В моем сценарии это абсолютно недопустимо: MSI должен прервать установку и выйти.

Тот же самый setupkit работает, как и ожидалось, если я установил интерфейс "Mondo" (или любой другой интерфейс).

Какое решение?

1 Ответ

6 голосов
/ 03 декабря 2011

Статья, на которую вы ссылаетесь, говорит, что Restart Manager закрывает запущенные процессы, чтобы смягчить перезагрузку, и он должен запустить процесс после завершения установки.В нем также указывается, какие свойства управляют взаимодействием с Restart Manager:

MSIRMSHUTDOWN при значении 2:

Процессыили службы, которые в настоящее время используют файлы, затронутые обновлением, закрываются, только если все они были зарегистрированы для перезапуска.Если какой-либо процесс или служба не были зарегистрированы для перезапуска, никакие процессы или службы не будут остановлены.

Убедитесь, что MSIDISABLERMRESTART имеет значение 0.В этом случае Restart Manager перезапустит все процессы и службы, которые он выключил.

См. Также MSIRESTARTMANAGERCONTROL


Если вы отключите отключение запущенных процессовустановка не завершится с ошибкой : она пройдет успешно, и установщик Windows запустит перезагрузку системы для завершения обновления.Вы можете использовать опцию /norestart для подавления перезагрузки.Тем не менее, рекомендуется перезагрузить как можно скорее, потому что система не находится в согласованном состоянии.

Таким образом, лучше научить ваш процесс взаимодействовать с Restart Manager, чтобы перезагрузка была смягчена.

...