Почему MSI требует исходный MSI-файл для удаления? - PullRequest
13 голосов
/ 16 октября 2008

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

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

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

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

Ответы [ 2 ]

29 голосов
/ 27 июля 2009

UPDATE

Этот новый инструмент поддержки (этот инструмент теперь также устарел) можно попробовать в последних версиях Windows, если у вас есть несуществующие MSI-пакеты, требующие удалить (вместо устаревшей, устаревшей, неподдерживаемой 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-файла, вы можете запустить admin-install пакета перед установкой. Это то, как компания с надлежащим развертыванием в управляемой сети будет делать что-то, и она будет удалять файлы cab и создавать точку сетевой установки с небольшим файлом MSI и файлами помимо него. Обратите внимание, что это может привести к приглашению UAC , в некоторых случаях, поскольку извлеченный файл MSI больше не подписан - это необходимо проверить с помощью конфигурации SOE / рабочего стола .
  • Прочитайте мой ответ в этой теме для полного описания установок администратора: Какова цель административной установки, инициированной с использованием msiexec / a? или подобного, но, возможно, более доступного ответа: Администратор установки и его использования
  • В некоторых редких случаях кэшированный MSI (со случайным именем) может ошибочно отсутствовать, и при удалении будет запрашиваться исходный MSI для завершения удаления. Это происходит не часто. Раньше было так, что можно использовать MsiZap.exe для очистки такой установки, но этот инструмент устарел , устарел и не поддерживается . Не используйте его - слишком много несовместимостей с более новыми версиями Windows, и вы создаете новые проблемы. Возможно, попробуйте этот инструмент поддержки вместо этого (также не рекомендуется). Единственный вариант, который я могу предложить сейчас, это этот ответ от saschabeaumont . Если вы попробуете этот инструмент, пожалуйста, сообщите нам, работает ли он для вас u. Если вы хотите выяснить, что могло привести к отсутствию кэшированного MSI, попробуйте прочитать раздел 12 здесь: Удаление файла MSI из командной строки без использования msiexec (в коротких возможных причинах диапазон от вмешательства в восстановление системы, антивирусные и чистые сценарии, ошибочная ручная настройка, нехватка места на диске, перебои с питанием, ошибки отладки в модуле разработчика, плохо спроектированные MSI-файлы с дублирующимися кодами пакетов, неудачные исправления и т. д. Я боюсь многих теорий, мало уверенности ).
  • В качестве в крайнем случае вы можете попробовать восстановление системы (если оно не было отключено полностью или частично), чтобы вернуться к предыдущему состоянию установки и увидеть если это решит вашу проблему удаления (вы можете найти видео-демоверсии об этом на YouTube или аналогичном сайте).
  • Имейте в виду, что восстановление системы может повлиять на Центр обновления Windows, который затем должен быть применен повторно, а также на многие другие параметры системы. Я видел новые, неразрешимые проблемы установки, возникающие в результате восстановления системы, но обычно все работает нормально. Очевидно, что не используйте эту функцию для развлечения, это последнее средство и лучше всего использовать для отката новых драйверов или установок, которые только что были установлены и которые, как было установлено, вызывают немедленные проблемы и такие вопросы. Чем дольше вы вернетесь назад, тем больше переделок вы создадите для себя. Много очевидных вещей, но, думаю, об этом стоит упомянуть.
  • Поскольку я упомянул о восстановлении системы, полагаю, мне следует упомянуть функцию последней удачной конфигурации . Эта функция не имеет ничего общего с удалением или восстановлением системы, но является последней загрузочной конфигурацией, которая сработала или привела к работающей системе. Он может быть использован для возобновления работы вашей системы, если во время загрузки она отключится или остановится. Это часто происходит после установки драйвера. Это ничего не даст, чтобы исправить вашу неудачную деинсталляцию (или я был бы очень удивлен).

Связанный ответ:


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

1 голос
/ 16 октября 2008

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

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

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

...