WiX: избегайте отображения диалогового окна используемых файлов и просто запрашивайте перезагрузку в конце установки.

Я использую ‹MajorUpgrade> в WiX 3.6, чтобы принудительно удалить предыдущую версию моего приложения, когда установка более новой версии. Мое приложение устанавливает DLL-файл расширения в проводник Windows, поэтому при удалении списков используемых файлов проводник и по умолчанию закрывает указанное приложение. Это убивает проводник Windows, поскольку моя оболочка исчезает (что несколько раздражает пользователя), однако я все еще получаю сообщение об ошибке, говорящее, что не все приложения могут быть закрыты, и заявляет, что потребуется перезагрузка. Я предпочитаю избегать этого трэша и пропускать диалоговое окно «Используемые файлы», просто информируя пользователя о необходимой перезагрузке в конце. Есть ли способ сказать WiX пропустить диалоговое окно «Используемые файлы»?


person ribram    schedule 12.04.2013    source источник


Ответы (3)


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

Это работает для меня, но я не пытаюсь убить какие-либо системные службы.

Вы также пробовали «DisableShutdown»?

«Установщик Windows использует диалоговое окно FilesInUse. Этот параметр отключает попытки диспетчера перезапуска смягчить перезапуски при установке пакета установщика Windows, который не был создан для использования диспетчера перезапуска. Установщик по-прежнему использует диспетчер перезапуска для обнаружения файлов в использования приложениями."

http://msdn.microsoft.com/en-us/library/aa370377%28v=vs.85%29.aspx

person Robin Johnson    schedule 30.04.2013
comment
Это работает, но вызывает error 2803: dialog view did not find a record for the dialog - person Alexandru; 17.03.2015
comment
Я разместил аналогичный вопрос (stackoverflow.com/questions /29103629/как-подавить-диалог) - person Alexandru; 17.03.2015

Вы можете отключить интеграцию Restart Manager, установив свойство MSIRESTARTMANAGERCONTROL равным "Disabled" (из SDK MSI). Вы также можете попробовать удалить диалоговое окно FilesInUse, но статическое Internal Consistency Evaluator (ICE) выдаст ошибку. Я надеюсь, что отключения Restart Manager будет достаточно, чтобы прекратить попытки вытащить ресурсы из explorer.exe.

person Rob Mensching    schedule 13.04.2013
comment
Привет, Роб, уже безуспешно пытался установить для MSIRESTARTMANAGERCONTROL значение Disabled. - person ribram; 15.04.2013
comment
Тогда вам придется удалить диалоговое окно FilesInUse и надеяться, что установщик Windows не предоставит внутренний диалог. :) - person Rob Mensching; 15.04.2013
comment
Привет, Роб, при удалении я предполагаю, что извлекаю источник WiX и перестраиваю его без диалога? - person ribram; 17.04.2013
comment
да. Диалоговое окно FilesInUse встроено, и вам придется перестроить расширение пользовательского интерфейса без него для тестирования. - person Rob Mensching; 17.04.2013
comment
@ribram Вы пробовали MSIRESTARTMANAGERCONTROL=Disabled или MSIRESTARTMANAGERCONTROL=Disable? - person azhrei; 02.07.2013

У меня также есть ситуация, когда попытка закрыть и снова открыть приложения всегда терпит неудачу. Требуется перезагрузка. Я попытался использовать все решения, предлагаемые здесь. Ни один из них не работал. Я смог решить проблему просто, хотя. Эта статья была подсказкой. https://msdn.microsoft.com/en-us/library/aa369546(v=vs.85).aspx

Я добавил условие в стандартное действие InstallValidate, которое всегда разрешается как false. Действие никогда не запускается. Стандартное действие имеет дело только с затратами на диск и открытыми процессами. Прекращение вызова действия останавливает все, что предлагает закрыть все. Мне также пришлось установить для свойства REBOOT установщика Windows значение FORCE, чтобы получить запрос на перезагрузку в конце установки.

Мое приложение занимает мало места на диске. Если моя установка потерпит неудачу позже в процессе, потому что диск будет заполнен, это будет большой проблемой, я найду способ сделать это самостоятельно.

person Kelly MacInnis    schedule 05.09.2015
comment
Как вы обошли шаг InstallValidate? Некоторый код будет оценен? - person Jerry; 15.03.2018
comment
Я использовал InstallShield, а не Wix, поэтому мне было бы сложно выразить решение в коде. Извиняюсь. Ищите способы добавить условия к стандартным действиям в Wix. - person Kelly MacInnis; 20.06.2018