Введение
Программное обеспечение, являющееся компонентом Microsoft Windows, Windows Installer (msiexec.exe, ранее известный как Microsoft Installer, кодовое имя Darwin) — это программный компонент и интерфейс программирования приложений (API) Microsoft Windows, используемый для установки, обслуживания и удаления программного обеспечения. Информация об установке и, опционально, сами файлы упаковываются в установочные пакеты — слабосвязанные реляционные базы данных, структурированные как COM Structured Storages и обычно известные как "MSI-файлы" по их расширениям имен файлов по умолчанию. Пакеты с расширением .mst содержат "Скрипты преобразований" для Windows Installer, пакеты с расширением .msm содержат "Модули объединения", а расширение .pcp используется для "Свойств создания патчей". Windows Installer содержит существенные изменения по сравнению с предшественником — Setup API. Новые возможности включают графический интерфейс и автоматическое создание последовательности удаления. Windows Installer позиционируется как альтернатива автономным исполняемым фреймворкам установки, таким как более ранние версии InstallShield и NSIS. До появления Microsoft Store (ранее известного как Windows Store), Microsoft рекомендовала сторонним разработчикам использовать Windows Installer в качестве основы для фреймворков установки, чтобы обеспечить их корректную синхронизацию с другими установщиками и поддержание согласованности внутренней базы данных установленных продуктов. Важные функции, такие как откат изменений и управление версиями, зависят от согласованной внутренней базы данных для надежной работы. Кроме того, Windows Installer способствует реализации принципа наименьших привилегий, выполняя установку программного обеспечения от имени непривилегированных пользователей.
Windows Installer (msiexec. exe, previously known as Microsoft Installer, codename Darwin) is a software component and application programming interface (API) of Microsoft Windows used for the installation, maintenance, and removal of software. The installation information, and optionally the files themselves, are packaged in installation packages, loosely relational databases structured as COM Structured Storages and commonly known as "MSI files", from their default filename extensions. The packages with the file extensions mst contain Windows Installer "Transformation Scripts", those with the msm extensions contain "Merge Modules" and the file extension pcp is used for "Patch Creation Properties". Windows Installer contains significant changes from its predecessor, Setup API. New features include a GUI framework and automatic generation of the uninstallation sequence. Windows Installer is positioned as an alternative to stand alone executable installer frameworks such as older versions of InstallShield and NSIS. Before the introduction of Microsoft Store (then named Windows Store), Microsoft encouraged third parties to use Windows Installer as the basis for installation frameworks, so that they synchronize correctly with other installers and keep the internal database of installed products consistent. Important features such as rollback and versioning depend on a consistent internal database for reliable operation. Furthermore, Windows Installer facilitates the principle of least privilege by performing software installations by proxy for unprivileged users.
Логическая структура упаковки
Комплект описывает установку одного или нескольких полноценных продуктов и однозначно идентифицируется с помощью GUID. Продукт состоит из компонентов, объединенных в функциональные блоки. Windows Installer не управляет зависимостями между продуктами.
Продукты
Одной установленной, работающей программой (или набором программ) является продукт. Продукт идентифицируется уникальным GUID (свойство ProductCode), обеспечивающим однозначную идентификацию во всем мире. GUID в сочетании с номером версии (свойство ProductVersion) позволяет осуществлять управление релизами файлов продукта и ключей реестра. Пакет включает в себя логику пакета и другие метаданные, относящиеся к способу выполнения пакета при запуске. Например, изменение EXE-файла в составе продукта может потребовать изменения ProductCode или ProductVersion для управления релизом. Однако, простое изменение или добавление условия запуска (при этом сам продукт остаётся неизменным по сравнению с предыдущей версией) всё равно потребует изменения PackageCode для управления релизом самого MSI-файла.
Особенности
Функция — это иерархическая группа компонентов. Функция может содержать любое количество компонентов и других подфункций. Небольшие пакеты могут состоять из одной функции. Более сложные установщики могут отображать диалоговое окно "выборочная установка", из которого пользователь может выбрать, какие функции устанавливать или удалять. Автор пакета определяет функции продукта. Например, текстовый процессор может поместить основной файл программы в одну функцию, а справочные файлы программы, дополнительную проверку орфографии и модули шаблонов — в дополнительные функции.
Компоненты
Компонент – это базовый элемент продукта. Windows Installer рассматривает каждый компонент как единое целое. Установщик не может установить только часть компонента. Компоненты могут содержать программные файлы, папки, COM-компоненты, ключи реестра и ярлыки. Пользователь не взаимодействует с компонентами напрямую. Компоненты идентифицируются глобально по GUID; таким образом, один и тот же компонент может использоваться совместно несколькими функциями в рамках одного пакета или несколькими пакетами, предпочтительно с использованием модулей слияния.
Основные пути
Ключевой путь — это конкретный файл, ключ реестра или источник данных ODBC, который автор пакета определяет как критически важный для данного компонента. Поскольку файл является наиболее распространенным типом ключевого пути, часто используется термин "ключевой файл". Компонент может содержать не более одного ключевого пути; если компонент не имеет явно заданного ключевого пути, то за ключевой путь принимается целевая папка компонента. При запуске программы, основанной на MSI, Windows Installer проверяет наличие ключевых путей. Если обнаружено несоответствие между текущим состоянием системы и значением, указанным в пакете MSI (например, отсутствует ключевой файл), соответствующая функция переустанавливается. Этот процесс известен как самовосстановление. Два компонента не должны использовать один и тот же ключевой путь.
Разработка пакетов для установки
Создание установочного пакета для нового приложения – задача нетривиальная. Необходимо указать, какие файлы должны быть установлены, куда и с какими ключами реестра. Любые нестандартные операции можно выполнить с помощью пользовательских действий, которые обычно разрабатываются в виде DLL. Существует ряд коммерческих и бесплатных продуктов, помогающих в создании MSI-пакетов, включая Visual Studio (нативно до VS 2010, с расширением в более новых версиях VS), InstallShield и WiX. В различной степени пользовательский интерфейс и поведение могут быть настроены для использования в менее распространенных сценариях, таких как автоматическая установка. После подготовки установочный пакет "компилируется" путем чтения инструкций и файлов с локальной машины разработчика и создания MSI-файла. Пользовательский интерфейс (диалоговые окна), отображаемый в начале установки, может быть изменен или настроен инженером по установке при разработке нового установочного пакета. Существует ограниченный набор элементов управления – кнопок, текстовых полей и меток, которые можно расположить в последовательности диалоговых окон. Установочный пакет должен быть способен работать без какого-либо пользовательского интерфейса, для так называемой автоматической установки.
Версии
Версия включена в Windows 95, Windows 98, Windows NT 4.0 1.2, Windows Me 2.0, Windows XP RTM, SP1, Windows 2000 SP3, SP4, Windows Server 2003 RTM, Windows 9x, Windows NT 4.0, Windows 2000 3.0, Windows XP SP2, Windows 2000 с установленным SP3 или более поздней версией, Windows XP, Windows Server 2003 3.1, Windows XP SP3, Windows Server 2003 SP1, SP2, Windows XP Professional x64 Edition, Windows 2000 с установленным SP3 или более поздней версией, Windows XP, Windows Server 2003 4.0, Windows Vista RTM, SP1, Windows Server 2008 RTM 4.5, Windows Vista SP2, Windows Server 2008 SP2, Windows XP с установленным SP2 или более поздней версией, Windows Server 2003 с установленным SP1 или более поздней версией, Windows XP Professional x64 Edition, Windows Vista, Windows Server 2008 5.0, Windows 7 и более поздние версии, Windows Server 2008 R2 и более поздние версии.