Windows Installer

Материал из Национальной библиотеки им. Н. Э. Баумана
Последнее изменение этой страницы: 16:35, 5 января 2018.
Windows Installer
Windows Installer 5.0 running on Windows 7.png
Help screen of Windows Installer 5.0 running on Windows 7
Разработчики: Microsoft
Выпущена: 31 August 1999 года; 20 years ago (1999-08-31)
Постоянный выпуск: 5.0 / 22 July 2009 года; 10 years ago (2009-07-22)
Операционная система: Microsoft Windows 2000 and later
Платформа: IA-32,x86-64, Itanium
Тип ПО: Installer
Лицензия: Freeware
Веб-сайт https://msdn.microsoft.com/en-us/library/cc185688(VS.85).aspx
Windows Installer Package
Расширение файла .msi, .msp
Интернет-тип носителя application/x-ole-storage, text/mspg-legacyinfo
Разработчик Microsoft
Тип формата Archive
Контейнеры для Installation information and an optional .cab or .7z file payload
Расширенный от COM Structured Storage
Открытый формат? No

Windows Installer (установщик Windows) — подсистема Microsoft Windows, обеспечивающая установку программ (инсталлятор). Является компонентом Windows, начиная с Windows 2000; может доустанавливаться и на более ранние версии Windows. Вся необходимая для установки информация (иногда и вместе с устанавливаемыми файлами) содержится в установочных пакетах (installation packages), имеющих расширение .msi.

История

Windows Installer был разработан в 1995—1998 годах и имел вначале кодовое название Darwin. Ранние версии назывались Microsoft Installer, отсюда стандартное расширение файла инсталляционного пакета — .msi. Первая версия Installer’а вышла в начале 1999 в качестве инсталлятора Microsoft Office 2000. В конце того же года Installer стал частью Windows 2000. Майкрософт всячески поощрял переход разработчиков на новый инсталлятор, включив в список требований к программам, желающим получить так называемый знак Windows 2000 Logo, требование устанавливаться с помощью Windows Installer.

Windows Installer оказался значительным шагом вперёд по отношению к предыдущему инсталлятору Microsoft — Setup API (ACME Setup): в нём были введены возможности GUI, поддержка деинсталляции и отката в любой момент установки (включая откат во время деинсталляции), корректная работа с правами доступа в Windows и другие возможности, что сделало его сильной альтернативой различным существовавшим на рынке инсталляционным пакетам.

Логическая структура пакета

Инсталляционный пакет описывает установку одного продукта и имеет свой GUID. Продукт состоит из компонентов (components) (тоже имеющих свои GUIDы), сгруппированных в возможности (features).

Компонент (component) — минимальная неделимая установочная единица, представляющая собой группу файлов, значений реестра, создаваемых папок и других элементов, объединённых общим именем (именем компоненты) и либо устанавливаемых вместе, либо не устанавливаемых. Компоненты скрыты от конечного пользователя. Каждая компонента имеет ключевой путь (key path) — например, имя своего главного файла — по которому определяется наличие этой компоненты на компьютере пользователя.

Возможность (feature; в русифицированной версии Windows именно это слово переводится как «компонента», что вносит путаницу) — это иерархическая группа компонент и/или других возможностей. Когда при установке показывается диалог выбора устанавливаемых частей программы, пользователь управляет выбором именно возможностей. Выбор возможности для установки влечёт за собой установку всех компонентов, которые в неё включены.

Физическая структура пакета

Файл .msi представляет собой составной документ OLE (OLE compound document — в том же формате-контейнере хранятся документы Microsoft Word, Excel и т. д.), в котором содержится небольшая реляционная база данных — набор из нескольких десятков взаимосвязанных таблиц, содержащих различную информацию о продукте и процессе установки. При этом все строковые данные в базе хранятся вместе в отдельном потоке документа, а в таблицах базы на них имеются ссылки; таким образом избегают дублирования строк, что значительно уменьшает размер базы.

Кроме базы, структура файла .msi предусматривает помещение туда пользовательских сценариев и вспомогательных DLL, если таковые требуются для установки, а также самих устанавливаемых файлов, запакованных в формате .cab. Файлы можно размещать и отдельно от пакета, в запакованном или распакованном виде (с сохранением структуры каталогов).

Процесс установки

Процесс установки состоит из нескольких этапов — сбора информации, выполнения (собственно установки), а также, возможно, отката (в случае ошибки или отмены установки пользователем).

Действия

Каждый этап установки состоит из последовательности действий (actions), записанной в базе данных. Действиям присвоены номера, определяющие порядок их выполнения, а иногда — и условия, при которых действия выполняются или не выполняются.

Большая часть действий — это стандартные действия, характерные для типичного процесса сбора информации и установки. Все эти действия документированы, кроме них, пользователь может определить и свои действия (custom actions).

Действия, определённые пользователем, могут быть либо написаны на одном из Скриптовый язык|скриптовых языков, встроенных в операционную систему (JScript или VBScript так же и Eclipse, побочный язык от C++), либо размещаться в специально созданной DLL (написанной на таких языках, как C, C++ и т. д.). Файлы с этими действиями помещаются внутрь файла .msi и извлекаются оттуда в начале запуска инсталляции.

Сбор информации

На этапе сбора информации Windows Installer собирает инструкции (либо путём взаимодействия с пользователем, либо программным путём) установить или удалить одну или несколько возможностей, входящих в продукт. Эти инструкции в дальнейшем формируют на основе базы данных внутренний сценарий, детально описывающий последующий этап выполнения.

Этот этап называют также непосредственным режимом (immediate mode).

Выполнение

К началу этого этапа инсталлятор генерирует внутренний сценарий, предназначенный для выполнения без вмешательства пользователя. Этот сценарий выполняется инсталлятором в привилегированном режиме службы NT (конкретно — под аккаунтом LocalSystem). Привилегированный режим требуется из-за того, что инсталляция могла быть запущена пользователем, не обладающим необходимыми правами для изменения системных параметров и файлов (хотя право установить программу ему было предоставлено).

Этот этап иногда называется отложенным режимом (deferred mode).

Откат

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

Как работает Windows Installer

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

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

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

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

Ссылки