31

Со времен Windows XP установщикам Windows (MSI-файлам), в том числе установщикам InstallShield (которые являются лишь начальной загрузкой для MSI), понадобилось в пять раз больше времени для удаления приложения, чем другим установщикам. То же самое верно , как правило , об установке.

Почему они все еще так долго, и почему люди все еще используют MSI для установки? Например:

Удаление VLC - занимает около 5 секунд.
Удалить XYZ - запускает «Подготовка к удалению ...» с 15-секундной задержкой.

Все, что он делает, это удаляет файлы и очищает реестр (который может включать регистрации COM), так почему же это занимает так много времени?

4 ответа4

32

Сначала установщик Windows систематически создает точку восстановления системы, что является довольно медленной операцией.

Также из статьи, озаглавленной, соответственно, "Установщик Windows отстой", выдержка:

Раньше считалось, что установка будет состоять из программы, выполняющей и выполняющей несколько простых шагов для установки программного обеспечения, а затем делающей наоборот при удалении.

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

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

Я также добавляю, что установщик Windows хранит всю информацию в реестре, который не является самой быстрой базой данных в мире.

19

Установщик Windows действительно имеет репутацию медленного. Есть несколько вещей, которые способствуют этому, и я собираюсь рассмотреть их ниже. Но, в конечном счете, следует спросить себя, действительно ли одна, две или три минуты вызывают споры при установке и удалении программного обеспечения. Я занимаю больше времени, чем просмотр телеканалов :)

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

Для очистки реестра используйте один из множества доступных инструментов. Но для дефрагментации реестра я не могу рекомендовать достаточно NTREGOPT для внутренней оптимизации улья и PageDefrag для дефрагментации физических файлов.

Причина, по которой операции MSI могут замедляться в реестре, связана с тем, как MSI использует его. Установщик Windows использует реестр для отслеживания того, какие продукты установлены, какие компоненты и в каком месте он был установлен. Исходные идентификаторы GUID используются в сжатом формате. Информацию об установках для каждой машины можно найти по адресу HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18 , тогда как данные о пользователях находятся рядом с ней в HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\ и по ключу с SID пользователя.

Оба эти ключа могут быть довольно большими и содержать многочисленные подразделы и значения. Они контролируют продукты, компоненты и ключевые пути каждого установленного приложения. Вся эта информация должна быть прочитана и обработана для правильной процедуры удаления. Однако формат реестра перечисляет ключи в алфавитном порядке, что позволяет выполнять двоичный поиск. Но ценностей нет. Они сохраняются по мере их создания, поэтому необходимо выполнить процедуру линейного поиска. Что замедляет работу алгоритма.

В целом, MSI - это довольно полный и точный метод установки и удаления программного обеспечения. Но он страдает от своей зависимости реестра. Система отличная. Это реестр Windows, который должен был быть капитально отремонтирован давно :)

Для более подробной информации:
Для глубокого анализа того, что MSI делает во время каждой процедуры установки или удаления, обратитесь к этой статье, которая объясняет, как настроить MSI Debug. Или, для меньшей, но все же ценной информации, вот как активировать ведение журнала.

6

Установщик Windows имеет много больших преимуществ для корпоративного развертывания, некоторые из которых я описал здесь: https://serverfault.com/a/274609/20599

Большая часть медлительности сеанса установщика Windows связана с его возможностями отката. Во-первых, он создает точку восстановления перед установкой или удалением (при условии, что восстановление системы не было отключено). Затем он выполнит резервное копирование всех уязвимых файлов во время удаления и установки, чтобы гарантировать, что система может быть восстановлена в исходное состояние в случае возникновения ошибки.

Еще одним фактором является то, что все компоненты в MSI будут зарегистрированы в реестре. Это связано с некоторыми накладными расходами.

Для скомпилированных файлов MSI также требуется некоторое время для извлечения файлов установки.

Посмотрите этот ответ для технических деталей для ускорения установки MSI.

3

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

Наиболее распространенная причина, о которой я могу думать, - это автоматические установки и сетевые дистрибутивы. Крупные корпорации могут легко распространять приложения, имея.MSI-файл на сетевом диске, а затем просто вызов пакетного файла (или приложения мастера распространения) на удаленной машине для автоматизации процесса установки.

В то время как другие варианты существуют за пределами.MSI-файлы, есть некоторые уникальные функции, которые интегрируются с большинством версий Windows , которых нет у многих других установщиков.

И чтобы вы знали - InstallShield не всегда является интерфейсом для файлов MSI. У них также есть свое собственное решение для установки.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .