Открыть сервисСервис

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)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru