MSI — формат установочных пакетов Windows¶
MSI (Microsoft Installer, ранее Windows Installer) — формат файла установочного пакета операционной системы Windows, представляющий собой базу данных в формате COM-структурированного хранилища (structured storage). Файлы с расширением .msi содержат все компоненты, необходимые для установки, изменения или удаления программного обеспечения: файлы, записи реестра, ярлыки, зависимости и сценарии установки. Формат является стандартным механизмом развёртывания программного обеспечения в среде Windows и поддерживается операционной системой начиная с Windows 2000.
¶История
Технология Windows Installer была представлена компанией Microsoft в 2000 году вместе с выходом операционной системы Windows 2000. До её появления распространение программ в Windows осуществлялось преимущественно с помощью скриптовых установщиков (InstallShield, Inno Setup, NSIS) или простых архивов с файлами копирования. Такие установщики не имели единого стандарта и не обеспечивали надёжного отката изменений при сбое.
Windows Installer задумывалась как централизованная подсистема управления установкой, реализующая принцип «транзакционности»: либо установка завершается полностью, либо система возвращается в исходное состояние. С выходом Windows XP, Vista, 7 и более новых версий формат развивался: добавлялась поддержка цифровых подписей, дельта-обновлений, повышения привилегий и многоязычных установок.
¶Устройство формата
Файл .msi представляет собой COM-structured storage — контейнер, состоящий из потоков (streams) и таблиц. Основу составляет реляционная база данных, описывающая установку в виде набора взаимосвязанных таблиц.
¶Основные таблицы
| Таблица | Назначение |
|---|---|
Property | Свойства установки: имя продукта, версия, производитель, код продукта |
File | Список устанавливаемых файлов, их размеры и хеши |
Component | Логические компоненты, объединяющие файлы, свойства реестра и другие ресурсы |
Feature | Функциональные возможности, которые пользователь может выбрать при установке |
Directory | Структура каталогов на диске |
Registry | Записи реестра, создаваемые при установке |
InstallExecuteSequence | Последовательность действий при установке |
MsiPatch | Информация о патчах (.msp) |
Файлы, которые должны быть записаны на диск, хранятся в отдельных потоках внутри контейнера, сжатые с использованием алгоритма Cabinet (.cab). Один пакет может содержать несколько кабинетных файлов.
¶Типы пакетов
- MSI (
.msi) — основной установочный пакет. - MST (
.mst) — таблица преобразований (transform), изменяющая MSI-пакет без его модификации. Используется для создания корпоративных вариантов установки. - MSP (
.msp) — патч, содержащий изменения для уже установленного продукта. - MSM (
.msm) — модуль объединения (merge module), переиспользуемый компонент для включения в несколько пакетов.
¶Установка
Управление MSI-пакетами осуществляется службой Windows Installer (msiexec.exe). Для установки пакета используется команда:
`` msiexec /i package.msi ``
Основные параметры командной строки:
/i— установка пакета;/x— удаление установленного продукта по коду или файлу;/p— применение патча.msp;/qn,/qb,/qr— режимы без интерфейса или с упрощённым интерфейсом;/l*v log.txt— подробное ведение журнала установки;/f— принудительная переустановка повреждённых компонентов.
Пакеты можно устанавливать вручную (двойной клик по файлу), через групповые политики Active Directory, с помощью систем централизованного развёртывания (SCCM, WSUS) или средств автоматизации (PowerShell, Ansible).
¶Возможности и преимущества
Windows Installer обеспечивает ряд функций, отсутствовавших в старых установщиках:
- Транзакционность — при сбое установки система откатывается к исходному состоянию.
- Восстановление (repair) — повреждённые или удалённые файлы восстанавливаются из пакета.
- Удаление (uninstall) — полное удаление продукта без остаточных файлов.
- Управление правами — установка может выполняться с повышением привилегий только для определённых действий (UAC).
- Кеширование — пакет кешируется в системе, что позволяет переустанавливать программу без исходного файла.
- Целостность — проверка хешей файлов и цифровых подписей.
¶Ограничения
Формат MSI имеет ряд недостатков, из-за которых часть разработчиков предпочитает альтернативные установщики:
- Сложность создания пакетов — требуется специализированное ПО (WiX Toolset, InstallShield, Advanced Installer).
- Ограниченная гибкость пользовательского интерфейса установки по сравнению с Inno Setup или NSIS.
- Невозможность выполнения произвольного кода на этапе установки без использования внешних действий (custom actions), что усложняет отладку.
- Проблемы с одновременной установкой нескольких пакетов (msiexec не поддерживает параллельную установку в ранних версиях).
¶Применение
MSI является предпочтительным форматом для корпоративного развёртывания программного обеспечения в организациях, использующих инфраструктуру Microsoft. Большинство крупных вендоров (Microsoft, Adobe, JetBrains, Google) распространяют свои продукты в виде MSI-пакетов или сопровождают их MSI-дистрибутивами. Формат также активно используется в открытом и свободном ПО: Wine, ReactOS и различные дистрибутивы Linux поддерживают установку MSI-пакетов через специальные утилиты.
¶См. также
- Windows Installer
- WiX Toolset
- Inno Setup
- NSIS
- Пакетный менеджер
¶Источники
- Документация Microsoft Learn: Windows Installer
- WiX Toolset Documentation
- Microsoft Installer Reference (MSDN)
