Что такое формат файла MSI?
Файлы с расширением .msi хранят пакет установки приложения или пакет драйверов для Microsoft Windows. Файлы .msi имеют стандартизированную структуру, определяемую метаданными, и содержат все ресурсы, необходимые для установки приложения. Название MSI происходит от Microsoft Installer - первоначального названия технологии до того, как Microsoft провела ребрендинг в Windows Installer.
Структура пакета MSI
Пакеты .msi представляют собой реляционные базы данных, сохраненные в формате OLE2 Compound File Binary - том же контейнере, который использовался в устаревших бинарных документах Office. Из-за этого общего контейнера первые восемь «магических байтов» (D0 CF 11 E0 A1 B1 1A E1) не являются уникальными для .msi; формат отличается своими внутренними потоками базы данных, такими как _Tables и _Columns. Каждый пакет разделен на:
- Один или несколько устанавливаемых продуктов
- Компоненты продукта - атомарные единицы установки (файлы, ключи реестра, ярлыки)
- Функции (Features) - более крупные иерархические структуры, состоящие из компонентов; пользователи могут выбирать дополнительные функции во время настройки
- Ключевые пути (Key paths) для компонентов - критические элементы, проверяемые при установке или удалении компонента
Хотя один установщик может объединять несколько продуктов, он не может нативно проверять зависимости между продуктами. Управление зависимостями осуществляется инструментами удаления или через графический интерфейс. .msi остается доминирующим форматом установщиков для корпоративного и устаревшего ПО для Windows.
Создание и использование пакетов Windows Installer
Пакеты .msi создаются с помощью специализированных инструментов, таких как WiX Toolset, Orca (входит в состав Windows SDK для проверки и редактирования баз данных) или коммерческих продуктов для разработки. Процесс установки управляется файлом msiexec.exe и разделен на три этапа:
- Пользовательский интерфейс - пользователи настраивают параметры установки
- Выполнение - фактическая установка, работающая в *немедленном* (immediate) или *отложенном* (deferred) режиме
- Откат - если установка завершается неудачей, транзакция откатывается, и изменения в системе не сохраняются
Содержимое пакета .msi можно извлечь без запуска установщика с помощью 7-Zip или через команду msiexec /a (административная установка).
Версии Windows Installer
Пакеты .msi дебютировали вместе с Office 2000 в 1999 году (Windows Installer 1.0); среда выполнения также была встроена в Windows 2000. Версия 5.0 была выпущена в 2009 году вместе с Windows 7 и Windows Server 2008 R2. К тесно связанным форматам относятся .msp (пакеты исправлений, доставляющие бинарные различия для установленных продуктов) и файлы преобразования .mst, которые изменяют поведение установщика во время выполнения. Более новый стандарт .msix, представленный в 2018 году, объединяет технологии .msi, .appx, App-V и ClickOnce для повышения безопасности, изоляции («песочницы») и распространения через Store, однако .msi продолжает широко использоваться для корпоративного и традиционного настольного ПО. Файлы полезной нагрузки внутри .msi обычно сжимаются в виде потоков .cab, встроенных в базу данных.
Безопасность и защита
РИСК: MEDIUMMSI выглядит как заслуживающий доверия установщик, что делает его излюбленной маскировкой для вредоносного ПО: злоумышленники распространяют троянизированные MSI (часто с вредоносными Custom Actions, запускающими код во время установки) или поддельные «обновления ПО». Устанавливайте MSI только с официальных сайтов разработчиков и отдавайте предпочтение подписанным пакетам - щелчок правой кнопкой мыши > Свойства > Цифровые подписи покажет издателя; неподписанный MSI из неизвестного источника - это тревожный сигнал. Поскольку MSI запускается с привилегиями установщика, вредоносный файл может сделать все то же самое, что и администратор. Трюк с переименованием или использованием 7-Zip позволяет проверить содержимое перед запуском.
Детали формата
в двух словахD0 CF 11 E0 A1 B1 1A E1, характерная для старых бинарных документов Office и файлов Outlook .msg. Его НЕЛЬЗЯ идентифицировать только по первым байтам; MSI отличается внутренними потоками базы данных установщика (например, таблицами, потоком _Tables/_Columns).Программы, открывающие файлы MSI
msiexec /i package.msi /qn. Для удаления: msiexec /x package.msi. Технические подробности
глубокая спецификация| Формат контейнера | OLE2 Compound File Binary (CFBF) - та же внешняя структура, что и у устаревших бинарных файлов Office .doc и .xls |
| Магические байты (смещение 0) | D0 CF 11 E0 A1 B1 1A E1 - сигнатура OLE2, общая с другими составными документами; не является уникальной только для MSI |
| MIME-тип | application/x-msi |
| Внутренние таблицы базы данных | Реляционные таблицы с фиксированной схемой, включая File, Registry, Component, Feature, Property и CustomAction |
| Хранение полезной нагрузки | Файлы, сжатые в виде потоков Cabinet (.cab), встроенных в базу данных или указанных как внешние архивы .cab |
| Алгоритмы сжатия | Потоки Cabinet используют сжатие LZX или MSZIP (совместимое с zlib) |
| Модель транзакций | Полный откат при сбое - все изменения файлов и реестра отменяются с помощью механизма сценариев теневого копирования |
| Движок выполнения | msiexec.exe (встроен в Windows); установка: /i, удаление: /x {ProductCode}, восстановление: /f, админ. извлечение: /a |
| Модель привилегий | Поддерживает режимы установки «на компьютер» (с повышением прав, ALLUSERS=1) и «на пользователя» (без повышения прав) |
| Объявленная установка (Advertised) | COM-классы и ярлыки могут быть объявлены - зарегистрированы, но не развернуты до первого использования (установка по требованию) |
| Поддержка исправлений | Файлы исправлений .msp доставляют бинарные различия и дополнительные данные таблиц для конкретного кода продукта MSI |
| Поддержка преобразований | Файлы преобразования .mst переопределяют значения свойств и данные таблиц во время установки без изменения базового .msi |
| Модули слияния | Пакеты модулей слияния .msm инкапсулируют многократно используемые компоненты для включения в несколько баз данных .msi |
| Пользовательские действия | Логика до и после установки может выполнять VBScript, JScript, точки входа DLL или внешние процессы EXE |
| Регистрация удаления | Автоматически записывает записи в HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{ProductCode} |
| Версии среды выполнения | Windows Installer от 1.0 (1999) до 5.0 (2009, поставляется с Windows 7 и Server 2008 R2) |
| Выпущен | 2000 (Windows Installer 1.0, shipped with Office 2000 / Windows 2000) |
| Спецификация | learn.microsoft.com |
Конвертации MSI
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах MSI.
Часто задаваемые вопросы
Как открыть или запустить файл MSI?
Можно ли открыть файл MSI на Mac или Linux?
В чем разница между установщиками MSI и EXE?
Как установить MSI в тихом режиме / на множество компьютеров?
msiexec /i package.msi /qn (тихо, без интерфейса). Администраторы развертывают MSI в масштабе всей сети через Group Policy, SCCM или Intune, часто с файлом преобразования (.mst) для настройки параметров.Как удалить программу, установленную из MSI?
msiexec /x package.msi. Поскольку Windows Installer отслеживает пакет, удаление происходит чисто.