Почему MSI требует исходный MSI-файл для удаления?

Как многие из вас, вероятно, заметили, при удалении пакета MSI Windows будет запрашивать оригинал .msi файл. Это почему?

Я вижу только недостатки этого:

  • не устойчив к сетевым изменениям.
  • не устойчив к изменениям локального диска.
  • неожиданно для пользователей.
  • обычно требует, чтобы пользователи покинули свой рабочий стол и начали крестовый поход, чтобы получить правильный CD.
  • вид доказывает, что установки не являются автономными.
  • способствует использованию небезопасных инструментов, таких как msizap.
  • что, в свою очередь, способствует менталитету "в следующий раз я просто воспользуюсь zip-файлом".

Может ли кто-то пролить свет на это?

2 ответа

Решение

ОБНОВЛЕНИЕ:

This new support tool (this tool is now also deprecated) can be tried on recent Windows versions if you have defunct MSI packages needing uninstall (rather than the outdated, deprecated, unsupported MsiZap.exe ).

Некоторые предлагают использовать инструмент, на который ссылается saschabeaumont: удаление без MSI-файла. Если вы попробуете, и это сработает, пожалуйста, сообщите нам об этом. Обратная связь в этом ответе указывает на то, что он работает (на данный момент у меня нет застрявших настроек для тестирования).


Почему вас спрашивают об оригинальном установочном носителе?:

  • Исходный MSI не требуется для удаления, если только сам MSI не спроектирован неправильно или отсутствует кэшированный MSI (подробности см. Ниже).
  • Все установленные файлы MSI кэшируются в %SystemRoot%\Installer\*.* С использованием случайного шестнадцатеричного имени.
  • Кэшированный файл MSI используется для любых операций обслуживания, ремонта и удаления, и его достаточно для удаления в подавляющем большинстве случаев.
  • В некоторых случаях этот кэшированный файл может отсутствовать, а затем удаление вообще невозможно в некоторых случаях ( некоторые теории относительно того, почему это может произойти - MSI design errors, anti-virus quarantining, system restore, tinkering, developer system in erroneous state from development work, etc...). См. Дополнительную информацию ниже - и ссылки для принудительного удаления или отмены регистрации продукта.
  • Исходный источник необходим только в том случае, если файлы необходимо скопировать на диск (для установки для обслуживания), или MSI выполняет явный запрос на разрешение исходного источника с помощью стандартного действия ResolveSource или с помощью настраиваемого действия (что не следует делать в правильно созданном пакете - я думаю, что пакет MS Office содержал эту ошибку ResolveSource в прошлом, заставляя всех искать свои установочные CD /DVD).
  • В предыдущих выпусках Windows этот кэшированный MSI был удален из всех кабин и, следовательно, содержал только структуру установщика и не содержал файлов.
  • Начиная с Windows 7 (MSI версии 5), файлы MSI теперь кэшируются в полном размере, чтобы избежать разрыва подписи файла, которая влияет на приглашение UAC при запуске установки (известная проблема Vista). Это может привести к значительному увеличению потребления дискового пространства (несколько гигабайт для некоторых систем). Проверьте эту статью и особенно обсуждение внизу для получения дополнительной информации.
  • Чтобы предотвратить кэширование огромного MSI-файла, вы можете запустить административную установку пакета перед установкой. Это то, как компания с правильным развертыванием в управляемой сети будет делать что-то, и она будет удалять файлы cab и создавать точку сетевой установки с небольшим файлом MSI и файлами, помимо него. Обратите внимание, что в некоторых случаях это может привести к появлению запроса UAC, поскольку извлеченный файл MSI больше не подписывается - это необходимо проверить с помощью конфигурации SOE / рабочего стола.
  • Прочтите мой ответ в этой теме, чтобы получить полное описание установок администратора: какова цель административной установки, инициированной с помощью msiexec /a? или этот похожий, но, возможно, более доступный ответ: установка администратора и его использование
  • В некоторых редких случаях кэшированный MSI (со случайным именем) может ошибочно отсутствовать, и при удалении будет запрашиваться исходный MSI для завершения удаления. Это случается не часто. Раньше было так, что можно было использовать MsiZap.exe очистить такую ​​установку, но этот инструмент устарел, устарел и не поддерживается. Не используйте его - слишком много несовместимостей с более новыми версиями Windows, и вы создаете новые проблемы. Возможно попробовать этот инструмент поддержки вместо этого (также не рекомендуется). Единственный вариант, который я могу предложить сейчас - это ответ saschabeaumont. Если вы попробуете этот инструмент, пожалуйста, сообщите нам, работает ли он для вас. Если вы хотите выяснить, что могло привести к отсутствию кэшированного MSI, попробуйте прочитать раздел 12 здесь: Удаление файла MSI из командной строки без использования msiexec (вкратце, возможные причины варьируются от вмешательства до восстановления системы, антивирусной и сценарии очистки, ошибочные ручные настройки, малое дисковое пространство, перебои с питанием, ошибки отладки в блоке разработчика, плохо спроектированные MSI-файлы с дублирующимися кодами пакетов, неудачные исправления и т. д. Боюсь, что существует множество теорий, мало уверенности).
  • В качестве последнего средства вы можете попробовать восстановление системы (если оно не было отключено полностью или частично), чтобы вернуться к предыдущему состоянию установки и посмотреть, решает ли это вашу проблему удаления (вы можете найти видео-демонстрации этого на YouTube или аналогичном сайте),
  • Помните, что восстановление системы может повлиять на Центр обновления Windows, который затем должен быть применен повторно, а также на многие другие параметры системы. Я видел новые, неразрешимые проблемы установки, возникающие в результате восстановления системы, но обычно все работает нормально. Очевидно, что не используйте эту функцию для развлечения, это последнее средство, и ее лучше всего использовать для отката новых драйверов или установок, которые только что были установлены и которые вызывают немедленные проблемы и подобные проблемы. Чем дольше вы вернетесь назад, тем больше переделок вы создадите для себя. Много очевидных вещей, но, думаю, об этом стоит упомянуть.
  • Поскольку я упоминал о восстановлении системы, полагаю, мне следует упомянуть функцию "Последняя удачная конфигурация". Эта функция не имеет ничего общего с деинсталляцией или восстановлением системы, но является последней загрузочной конфигурацией, которая сработала или привела к работающей системе. Он может быть использован для возобновления работы вашей системы, если во время загрузки она отключится или остановится. Это часто происходит после установки драйвера. Это ничего не сделает, чтобы исправить вашу неудачную деинсталляцию (или я был бы очень удивлен).

Соответствующий ответ:


В дополнение к этому ответу, возможно, эта статья о различных способах удаления пакетов MSI представляет интерес. Это довольно популярная статья с большим количеством просмотров:

Есть несколько причин для сохранения оригинальной MSI:

  • Деинсталлятор использует его, чтобы узнать, какие файлы и ключи реестра были установлены, и убедиться, что все они очищены.
  • MSI может содержать код для специальных действий по удалению, которые необходимо выполнить.
  • Это позволяет вам выполнить операцию восстановления из меню "Установка и удаление программ", независимо от того, сохранили ли вы установочный файл или нет.

Обычно Windows хранит в кэше файл, поэтому вам не нужно об этом думать. Смотрите вашу папку%WINDIR%\Installer\. Единственная причина, по которой он запрашивает исходную версию MSI, заключается в том, что с сохраненным файлом что-то не так. Это решает большинство ваших проблем, хотя и поднимает новый (дисковое пространство).

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