Удалить с помощью MSI-файла - не удается закрыть все запрошенные приложения

Я столкнулся с проблемой, используя установщик, сгенерированный InstallShield. Проблема появляется во время процесса удаления. Файл setup.exe требует прав администратора. Когда я пытаюсь удалить приложение, используя файл setup.exe, все работает как положено. Но когда я пытаюсь удалить приложение из программ и функций Windows, тогда деинсталляция выполняет MSI-файл. В этом сценарии результатом является то, что процесс удаления не может закрыть открытые приложения, и появляется сообщение об ошибке "Установке не удалось автоматически закрыть все запрошенные приложения (...)". Я проверил проблему на разных операционных системах. Кажется, что в Windows 7 и 10 проблема появляется, но в Windows Server 2012R2 она работает, как и ожидалось (удаление может закрыть необходимые приложения). Есть идеи, как решить проблему? Буду благодарен за советы.

2 ответа

Тем временем я случайно обнаружил, что после изменения уровня UAC и перезагрузки компьютера деинсталляция может закрывать приложения (ранее я проверял это без перезапуска, и в поведении не было никакой разницы, поэтому я думал, что это не проблема). Большое спасибо за ваш совет @PhilDW. Я снова изменил настройки UAC и попытался создать журналы, и журналы, связанные с проблемой, представлены ниже:

MSI (B4:D0) [15:44:09:691]: ​​RESTART MANAGER: Обнаружено, что приложение с идентификатором 15584, понятным именем "XYZ System Monitor", типа RmUnknownApp и состоянием 1 удерживает файл [s] в использовании, MSI (c) (4C:C8) [15:44:09:697]: RESTART MANAGER: сессия открыта. MSI (c) (4C:C8) [15:44:09:707]: RESTART MANAGER: Обнаружено, что приложение с идентификатором 15584, понятным именем "XYZ.Monitor.exe", типа RmCritical и статусом 1 содержит файл [s]. в использовании. MSI (c) (4C: C8) [15: 44: 09: 707]: Примечание: 1: 2262 2: ListBox 3: -2147287038 Действие 15:44:31: Завершение работы приложений. Завершение работы приложений MSI (B4:D0) [15:44:32:071]: RESTART MANAGER: Успешно завершите работу всех приложений в сеансе службы, в которых хранятся используемые файлы. MSI (c) (4C:C8) [15:44:32:071]: RESTART MANAGER: Успешно завершите работу всех приложений, в которых хранятся файлы. MSI (B4:D0) [15:44:32:573]: примечание: 1: 1611 Программа установки не смогла автоматически закрыть все запрошенные приложения. Прежде чем продолжить установку, убедитесь, что приложения, содержащие файлы, закрыты.

Я не понимаю, почему в журналах утверждается, что все приложения были успешно закрыты, а затем в журнале утверждается что-то противоположное.

Самый простой способ - убить процесс, прежде чем он достигнет этой точки в установщике. Вы захотите поместить это ранее в последовательность InstallExucute, чтобы она работала в режиме без вывода сообщений.

Например, в VBScript

Dim oShell: Set oShell = CreateObject ("WScript.Shell")

oShell.Run "taskkill / im exeprocessname.exe", True

Другие вопросы по тегам