From Wikipedia, the free encyclopedia
This article is about the Microsoft Windows component. For the installation of the operating system itself, see Windows Setup.
Help screen of Windows Installer 5.0 running on Windows 11. |
|
Developer(s) | Microsoft |
---|---|
Initial release | 31 August 1999; 24 years ago |
Final release |
5.0 |
Operating system | Microsoft Windows |
Platform | IA-32, x86-64, ARM32, ARM64, Itanium |
Included with | Windows 2000 and later |
Type | Installer |
License | Freeware |
Website | docs |
Filename extension |
.msi, .msp |
---|---|
Internet media type |
application/x-ole-storage |
Developed by | Microsoft |
Type of format | Archive |
Container for | Installation information and an optional .cab file payload |
Extended from | COM Structured Storage |
Open format? | No |
Windows Installer (msiexec.exe
, previously known as Microsoft Installer,[3] codename Darwin)[4][5] 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».[6] 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.
Logical structure of packages[edit]
A package describes the installation of one or more full products and is universally identified by a GUID. A product is made up of components, grouped into features. Windows Installer does not handle dependencies between products.
Products[edit]
A single, installed, working program (or set of programs) is a product. A product is identified by a unique GUID (the ProductCode property) providing an authoritative identity throughout the world. The GUID, in combination with the version number (ProductVersion property), allows for release management of the product’s files and registry keys.
A package includes the package logic and other metadata that relates to how the package executes when running. For example, changing an EXE file in the product may require the ProductCode or ProductVersion to be changed for the release management. However, merely changing or adding a launch condition (with the product remaining exactly the same as the previous version) would still require the PackageCode to change for release management of the MSI file itself.
Features[edit]
A feature is a hierarchical group of components. A feature may contain any number of components and other sub-features. Smaller packages can consist of a single feature. More complex installers may display a «custom setup» dialog box, from which the user can select which features to install or remove.
The package author defines the product features. A word processor, for example, might place the program’s core file into one feature, and the program’s help files, optional spelling checker and stationery modules into additional features.
Components[edit]
A component is the basic unit of a product. Each component is treated by Windows Installer as a unit. The installer cannot install just part of a component.[7] Components can contain program files, folders, COM components, registry keys, and shortcuts. The user does not directly interact with components.
Components are identified globally by GUIDs; thus the same component can be shared among several features of the same package or multiple packages, ideally through the use of Merge Modules.
Key paths[edit]
A key path is a specific file, registry key, or ODBC data source that the package author specifies as critical for a given component. Because a file is the most common type of key path, the term key file is commonly used. A component can contain at most one key path; if a component has no explicit key path, the component’s destination folder is taken to be the key path. When an MSI-based program is launched, Windows Installer checks the existence of key paths. If there is a mismatch between the current system state and the value specified in the MSI package (e.g., a key file is missing), the related feature is re-installed. This process is known as self-healing or self-repair. No two components should use the same key path.
Developing installer packages[edit]
Creating an installer package for a new application is not trivial. It is necessary to specify which files must be installed, to where and with what registry keys. Any non-standard operations can be done using Custom Actions, which are typically developed in DLLs. There are a number of commercial and freeware products to assist in creating MSI packages, including Visual Studio (natively up to VS 2010,[8] with an extension on newer VS versions[9]), InstallShield and WiX. To varying degrees, the user interface and behavior may be configured for use in less common situations such as unattended installation. Once prepared, an installer package is «compiled» by reading the instructions and files from the developer’s local machine, and creating the .msi file.
The user interface (dialog boxes) presented at the start of installation can be changed or configured by the setup engineer developing a new installer. There is a limited language of buttons, text fields and labels which can be arranged in a sequence of dialogue boxes. An installer package should be capable of running without any UI, for what is called «unattended installation».
ICE validation[edit]
Microsoft provides a set of Internal Consistency Evaluators (ICE) that can be used to detect potential problems with an MSI database.[10] The ICE rules are combined into CUB files, which are stripped-down MSI files containing custom actions that test the target MSI database’s contents for validation warnings and errors. ICE validation can be performed with the Platform SDK tools Orca and msival2, or with validation tools that ship with the various authoring environments.
For example, some of the ICE rules are:
- ICE09: Validates that any component destined for the System folder is marked as being permanent.
- ICE24: Validates that the product code, product version, and product language have appropriate formats.
- ICE33: Validates that the Registry table is not used for data better suited for another table (Class, Extension, Verb, and so on).
Addressing ICE validation warnings and errors is an important step in the release process.
Versions[edit]
Version | Included with[1] | Also available for |
---|---|---|
1.0 | Office 2000 | — |
1.1 | Windows 2000 RTM, SP1, SP2
Office XP[11] |
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 with at least SP3 Windows XP Windows Server 2003 |
3.1 | Windows XP SP3 Windows Server 2003 SP1, SP2 Windows XP Professional x64 Edition |
Windows 2000 with at least SP3 Windows XP Windows Server 2003 |
4.0 | Windows Vista RTM, SP1 Windows Server 2008 RTM |
— |
4.5[12] | Windows Vista SP2 Windows Server 2008 SP2 |
Windows XP with at least SP2 Windows Server 2003 with at least SP1 Windows XP Professional x64 Edition Windows Vista Windows Server 2008[13] |
5.0 | Windows 7 and later Windows Server 2008 R2 and later |
— |
See also[edit]
- APPX – Software package format used on Microsoft’s Windows Store
- App-V – Software package format used for virtualization and streaming
- .exe
- List of installation software
- Package management system
- Windows Installer CleanUp Utility
- Windows Package Manager
- ZAP file – a way to perform an application installation when no MSI file exists
References[edit]
- ^ a b «Released Versions of Windows Installer». Microsoft Developer Network. Microsoft. Retrieved 3 November 2012.
- ^ «File Extension .MSI Details». Filext.com. Retrieved 2013-04-24.
- ^ Mensching, Rob (2003-11-25). «Inside the MSI file format». MSDN Blogs. Archived from the original on 2009-01-15. Retrieved 2017-02-15.
- ^ Mensching, Rob (2003-10-11). «The story of Orca». MSDN Blogs. Archived from the original on 2008-12-23. Retrieved 2017-02-15.
- ^ Smith, Chris (2005-07-01). «Windows Installer, The .NET Framework, The Bootstrapper, and You». MSDN Blogs. Retrieved 2017-02-15.
- ^ Stewart, Heath (2006-02-27). «Identifying Windows Installer File Types». Retrieved 2020-04-22.
- ^ «Windows Installer Components». MSDN Library. Microsoft Corporation. 2012-11-30. Retrieved 2013-04-08.
- ^ Hodges, Buck (2011-03-17). «Visual Studio setup projects (vdproj) will not ship with future versions of VS». MSDN Blogs. Retrieved 2020-02-04.
- ^ «Visual Studio Installer Projects Extension». Visual Studio Blog. 2014-04-17. Retrieved 2020-02-04.
- ^ Internal Consistency Evaluators – ICEs
- ^ «Applying Full-File Updates to Client Computers». Microsoft. March 9, 2004. Archived from the original on April 10, 2004.
- ^ What’s New in Windows Installer 4.5
- ^ «Released Versions of Windows Installer (Windows)». Msdn.microsoft.com. 2012-11-30. Retrieved 2013-04-24.
External links[edit]
- Official website
Время на прочтение
7 мин
Количество просмотров 51K
Технология Windows Installer (MSI) является стандартом де-факто в мире системных администраторов, занимающихся распространением и поддержкой программного обеспечения для десктопных и серверных версий Windows. Формат MSI поддерживается всеми крупнейшими системами управления конфигурациями (Microsoft SCCM, CA Unicenter и многими другими), а для некоторых систем распространения ПО — является единственным поддерживаемым форматом.
Мой опыт работы с этой технологией — как теоретический, так и практический — приобретен за время работы в компании «Инфопульс Украина» и связан с созданием MSI-пакетов и подготовкой готовых MSI-пакетов к автоматической установке в корпоративной среде.
Зачем это вам?
Если вы занимаетесь централизованной установкой приложений в сетях Windows, знание формата MSI и умение создавать и редактировать пакеты в этом формате вам может здорово пригодиться при подготовке пакета к развертыванию и диагностике проблем. В Европе и США технология Windows Installer востребована многими крупными заказчиками, поэтому знание MSI может быть плюсом для системного администратора при трудоустройстве.
Что нужно знать и уметь перед началом изучения?
Ничего сложного. Если у вас есть опыт администрирования и поддержки небольшой (а лучше большой, иерархической) сети Windows-машин, вероятнее всего вы уже сталкивались с основными вопросами и понятиями, которые вам понадобятся. Перед тем, как начать, убедитесь, что вы хорошо понимаете структуру файловой системы Windows, структуру профиля пользователя и структуру реестра, знаете что такое процессы и службы в Windows, умеете управлять учетными записями пользователей и знаете где находятся журналы событий. Для того, чтобы научиться создавать пакеты MSI, вам совсем необязательно иметь опыт разработчика, хотя конечно лучше если такой опыт у вас есть. И совсем не обязательно уметь писать запросы на SQL, хотя это тоже может пригодиться (ведь каждый MSI-файл — это небольшая реляционная база данных). Но обязательно нужно уметь читать и понимать техническую документацию на английском, без этого скорее всего ничего не получится. При изучении теории (и при создании пакетов на практике) постарайтесь хотя бы на первых порах строго следовать стандартам Windows Installer, избегая вспомогательных утилит типа InstallShield/InstallScript, так вы лучше поймёте как правильно создать MSI-пакет.
Готовим песочницу и начинаем практику
Начать нужно с установки и настройки виртуальной машины. В процессе обучения вам придется немало поэкспериментировать, поэтому лучше сделать это в песочнице. Если нужны бесплатные продукты — устанавливаем VirtualBox или VMWare Player (для профессиональных задач их функционала может быть недостаточно, но для обучения — вполне подойдет). В виртуальной машине, естественно, нужно установить Windows на ваш выбор (XP и выше).
Если у вас уже есть опыт работы с утилитами от Sysinternals — прекрасно. Если нет — самое время восполнить пробел. Нам понадобятся минимум две: для отслеживания файловой и реестровой активности приложения при установке или во время его работы — Process Monitor, для запуска инсталляции от имени учетной записи LocalSystem — PsExec. Попрактикуйтесь использовать эти утилиты на простом приложении типа notepad (с какими ресурсами работает notepad при открытии файла, при сохранении файла; запустите notepad от имени пользователя LocalSystem, поэкспериментируйте с сохранением файлов и установкой файловых ассоциаций), в дальнейшем эти навыки пригодятся.
Установите Panda QuickShot или другой софт для сравнения состояний системы. Разберитесь с основным функционалом, научитесь отслеживать файловые и реестровые изменения в системе при установке нового приложения или изменении параметров системы (самое простое — зарегистрируйте новую файловую ассоциацию для notepad, измените обои рабочего стола и отследите где хранятся эти настройки). Подойдите к этому творчески, поле для экспериментов обширное.
Скачайте MSI-инсталлятор какого-нибудь несложного приложения (например, Orca, InstEd или Firefox). Установите пакет на виртуальной машине, с помощью описанных выше утилит изучите устанавливаемые им ресурсы. Научитесь пользоваться командной строкой Windows Installer (msiexec /?), поэкспериментируйте с различными опциями установки и сравните результат. Выполните удаление приложения из командной строки, установите пакет в автоматическом (silent) режиме.
Установите InstEd или Orca на хост-машине. Откройте MSI-пакет, который вы устанавливали на виртуальной машине, с помощью одной из этих утилит. Сравните записи основных таблиц в MSI-пакете (File, Directory, Registry) с ресурсами (файлы, папки, ключи реестра), установленными этим пакетом на вашей виртуальной машине (результат сравнения снимков состояний с помощью Panda QuickShot).
Немного теории
Теперь самое время взяться за теорию. Не буду дублировать официальную документацию и отдельные полезные статьи по ссылкам ниже, просто попробую перечислить вещи, с которыми нужно разобраться для начала:
- Таблица Property, код продукта (ProductCode), код пакета (PackageCode), стандартные свойства в MSI;
- Таблица Upgrade и код обновления (UpgradeCode);
- Таблицы Feature, Component и их назначение;
- Таблицы Directory, File, Registry, Shortcut;
- Способы хранения файлов приложения, поставляемых с MSI-пакетом, таблица Media;
- Трансформы, их создание и применение из командной строки.
Прочтение документации по указанным темам подкрепляйте экспериментами на готовых пакетах, а со временем можно попробовать сделать пакет самому. Этих знаний вам будет достаточно для внесения небольших изменений в MSI-пакеты при подготовке к развертыванию в корпоративной среде (типовые задачи — задание свойств пакета, правка реестра, удаление файлов и ярлыков, отключение кнопки Remove для приложения в Add/Remove Programs). Только не забывайте после внесения любых правок в пакет выполнять тщательное тестирование перед запуском пакета в промышленную эксплуатацию. При тестировании обязательно используйте рекомендации, приведенные в этой статье.
Думаю, на этом пока можно закончить вводную часть. В дальнейшем (если будет интерес) я попробую рассказать об особенностях некоторых готовых MSI-пакетов, предоставляемых производителями ПО для развертывания в корпоративной среде и рассмотреть другие интересующие системных администраторов вопросы.
Пожелания, замечания, а также предложения по темам для следующих статей приветствуются.
Обзор утилит и документации
Бесплатно можно использовать простые редакторы MSI-файлов с ограниченным функционалом — здесь упоминания заслуживают классическая Orca от Microsoft и довольно удобный InstEd. Эти редакторы позволяют вносить небольшие изменения в готовые MSI-файлы, создавать и применять трансформы, но создавать в них MSI-пакеты с нуля довольно непросто (а для больших пакетов — и вовсе не имеет смысла). Но если вы действительно хотите изучить технологию MSI, вам просто необходимо собрать пару простых пакетов в InstEd или Orca и выполнить их валидацию на соответствие стандарту Windows Installer.
Специализированные утилиты для выполнения setup capture (создания или конвертирования установочных пакетов из так называемых «старых форматов»» в формат MSI с использованием сравнения «снимков» системы до и после установки приложения или мониторинга изменений в системе «на лету») — бесплатный AppDeploy Repackager, или более серьезный MSI Generator. MSI-пакетам, созданным с использованием этих утилит, может потребоваться некоторая доработка, которую можно выполнить с помощью редактора MSI.
Серьёзные полнофункциональные (и весьма дорогие) IDE, обеспечивающие поддержку полного цикла работ с MSI-пакетами — если вы будете заниматься технологией MSI профессионально, вам скорее всего не обойтись без этих программ. В этом сегменте до недавнего времени доминировали два продукта — AdminStudio от Flexera и Wise Package Studio от Symantec, но недавно Symantec объявил о прекращении работ по развитию Wise Package Studio, и рынок переходит в руки Flexera. Кроме работы с MSI, AdminStudio позволяет работать с виртуальными пакетами форматов Microsoft App-V, VMware Thin App и Citrix XenApp. Для ознакомительных целей доступна пробная 21-дневная версия.
Отдельно стоит упомянуть WIX (Windows Installer XML) — набор утилит для создания MSI-файлов из XML-описаний. Этот проект был выпущен «Майкрософтом» под открытой лицензией Common Public License, поддерживает интерфейс командной строки и может использоваться для автоматизации создания версий инсталляционных пакетов. Хорошее описание есть на Хабре.
Полезные ресурсы:
Статьи по Windows Installer на RSDN: раз, два. Хороши тем, что описывают основные концепции и понятия MSI на русском языке и в довольно читабельной форме. Статьи немного устарели (описывают стандарт 2.0), но актуальности не потеряли. Важно понимать, что только этих статей для изучения MSI недостаточно — нужно много читать MSDN и много практиковаться.
Статьи на MSDN — самый полный источник информации, которая понадобится в процессе изучения и дальнейшей работы. Присутствуют пошаговые упражнения для практики по созданию MSI-пакетов с нуля.
AppDeploy.com — общедоступная база знаний по приложениям, часто можно найти особенности установки или настройки готовых пакетов, выпускаемых крупными вендорами (Adobe, Microsoft), командные строки для автоматизации установки и другие полезные вещи.
Для удобства продублирую ссылки на программы из текста одним списком:
- Виртуальные машины: VirtualBox или VMWare Player.
- Утилиты Sysinternals: Process Monitor, PsExec, полный список утилит с описаниями.
- Программы для редактирования MSI-файлов: InstEd, Orca (нужно устанавливать как часть Windows 7 SDK).
- Программы для создания MSI-файлов: AppDeploy Repackager, MSI Generator, AdminStudio (пробная версия).
На чтение 3 мин Опубликовано Обновлено
Windows Installer — это стандартный сервис установки и удаления программного обеспечения на операционной системе Windows. Он позволяет пользователям устанавливать и удалять приложения с удобством и безопасностью. Однако, иногда компьютер может не иметь системы Windows Installer или нужная версия может быть устаревшей.
Установка Windows Installer на компьютер — это простой процесс, который может быть выполнен несколькими способами. Один из способов — это загрузить и установить Windows Installer с официального веб-сайта Microsoft. Также можно установить его с помощью обновлений Windows. Для этого нужно открыть раздел «Обновления» в настройках компьютера и установить соответствующее обновление.
Если вам нужно установить определенную версию Windows Installer, то вы можете воспользоваться специальной утилитой, такой как «MSI Installer», которая позволяет выбрать нужную версию программы для установки. Это может быть полезно в случае, если вам необходима определенная функциональность или совместимость с другим программным обеспечением.
Необходимо отметить, что установка Windows Installer может потребовать прав администратора. Если у вас нет необходимых прав доступа, вам следует обратиться к системному администратору или сотруднику службы поддержки.
Содержание
- Что такое Windows Installer?
- Принцип работы Windows Installer
- Как установить Windows Installer?
Что такое Windows Installer?
Windows Installer (W
Принцип работы Windows Installer
Процесс установки приложения с использованием Windows Installer основан на пакетах Windows Installer (.msi), которые содержат всю необходимую информацию о программе, включая файлы, реестр, настройки и другие компоненты.
Windows Installer обеспечивает надежную и безопасную установку программного обеспечения, следуя определенным этапам:
- Поиск: Windows Installer проверяет систему на наличие предыдущих версий программы или компонентов, которые могут быть необходимы для установки.
- Загрузка: Если требуется, Windows Installer загружает необходимые файлы программы с установочного носителя или из сети.
- Проверка: Windows Installer проверяет целостность и подпись пакета установки, чтобы обеспечить его безопасность.
- Установка: Windows Installer копирует файлы программы, создает записи в реестре, устанавливает необходимые компоненты и выполняет другие операции для полной установки программы.
- Настройка: Windows Installer выполняет дополнительные настройки программы в соответствии с указанными параметрами.
Windows Installer также поддерживает функцию отката, которая позволяет восстановить предыдущую версию программы, если установка была неуспешной или требуется отменить изменения.
Благодаря принципу работы Windows Installer, пользователи могут легко и безопасно устанавливать и удалять программное обеспечение на своем компьютере, обеспечивая стабильную работу системы.
Как установить Windows Installer?
Шаг | Инструкции |
---|---|
1 | Откройте веб-браузер и посетите официальный сайт Microsoft. |
2 | Найдите страницу загрузки Windows Installer. |
3 | Выберите необходимую версию Windows Installer в зависимости от операционной системы и языка. |
4 | Нажмите на ссылку для скачивания Windows Installer. |
5 | Подождите, пока файл загрузится на ваш компьютер. |
6 | Запустите скачанный файл установщика Windows Installer. |
7 | Следуйте инструкциям установщика для завершения процесса установки. |
8 | Перезагрузите компьютер, чтобы изменения вступили в силу. |
После завершения установки Windows Installer вы сможете использовать его для установки и управления программами, использующими эту технологию. Установка Windows Installer обеспечивает более надежный и эффективный процесс установки программ на компьютере под управлением операционной системы Windows.
Если вы используете какие-либо программы для анализа содержимого диска, то можете обнаружить, что в Windows 10 скрытая системная папка C:\Windows\Installer занимает много места: иногда сотни мегабайт, а иногда и гигабайты, отсюда и вопрос — что это за папка и что с ней можно, а чего нельзя делать.
В этой инструкции о том, можно ли удалять папку Windows\Installer, файлы в ней, к чему это может привести и есть ли возможность уменьшить занимаемое этой папкой место на жестком диске или SSD. Также может быть интересным: Как очистить место на диске C.
- Можно ли удалить C:\Windows\Installer
- Как очистить папку Windows\Installer в Windows 10
- Видео инструкция
Можно ли удалять файлы из C:\Windows\Installer в Windows 10
Если вы загляните в папку C:\Windows\Installer (папка скрыта по умолчанию, но в нее легко попасть, введя в адресную строку проводника путь к папке, либо включив показ и скрытых и защищенных системных файлов Windows 10), в ней вы обнаружите набор файлов с расширениями .msi и .msp, а также папки: состоящие из кодов и отдельные с расширением .tmp.
Можно ли это всё удалить? Короткий ответ: нет, не следует. Вы можете безопасно удалить лишь папки .tmp, но они и не занимают много места. Однако, существует возможность в какой-то степени очистить эту папку, о чем в следующем разделе.
А сначала о том, что представляют собой эти файлы в Windows\Installer — это файлы установщиков программ (тех, что установлены на вашем компьютере), использующих для установки службу «Установщик Windows» и они используются когда программа обновляется или когда вы её, наоборот, удаляете через «Панель управления» — «Программы и компоненты». Также они могут использовать для функции «Исправить установку». Соответственно, при их удалении могут возникнуть проблемы при выполнении этих задач.
Как очистить папку Windows\Installer
Иногда случается, что в этой папке присутствуют установщики программ .msi и .msp, более не используемые нигде в системе и такие файлы можно удалить, но для этого нужно определить, какие именно это файлы. Примечание: теоретически далее описанные шаги могут привести к нежелательным последствиям.
Для этого можно использовать бесплатную утилиту PatchCleaner, официальный сайт разработчика — https://www.homedev.com.au/Free/PatchCleaner (для загрузки используйте вкладку «Downloads» в верхней части описания программы).
После запуска PatchCleaner, утилита проанализирует содержимое указанной папки и, если среди файлов в C:\Windows\Installer окажутся файлы, которые более не используются (они будут отображены в разделах «Excluded by filters» и «Orphaned». Такие файлы можно сразу удалить (Delete) или переместить в указанную папку «Move» (лучше сначала использовать второй вариант, чтобы убедиться, что всё работает как прежде).
Также, если нажать по «Details» рядом с количеством найденных файлов, в том числе используемых в настоящее время (still used), можно увидеть информацию о том, каким программам соответствуют найденные файлы .msi и .msp, сколько места на диске они занимают и, возможно, принять решение об удалении некоторых из этих программ, если вы ими более не пользуетесь и они не требуются для правильного функционирования другого ПО.
Видео инструкция
Надеюсь, информация была полезной. К слову, о больших папках в Windows 10: вы можете очистить папку DriverStore\FileRepository.
Не следует путать с Установка Windows.
Тип | программное обеспечение |
---|---|
Разработчик | Microsoft |
Операционная система | Windows |
Последняя версия | 5.0 (22 июля 2009 года [1]) |
Лицензия | Пользовательское соглашение Microsoft |
Windows Installer (установщик Windows) — подсистема Microsoft Windows, обеспечивающая установку программ (инсталлятор). Является компонентом Windows, начиная с Windows 2000; может доустанавливаться и на более ранние версии Windows. Вся необходимая для установки информация (иногда и вместе с устанавливаемыми файлами) содержится в установочных пакетах (installation packages), имеющих расширение .msi.
История[]
Windows Installer был разработан в 1995—1998 годах и имел вначале кодовое название Darwin. Ранние версии назывались Microsoft Installer, отсюда стандартное расширение файла инсталляционного пакета — .msi.[2]
Первая версия 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).
Откат[]
Если какое-либо из действий, определённых в сценарии, оканчивается неудачей, или установка в процессе отменяется пользователем, все действия, выполненные до этого места, откатываются, возвращая систему в состояние, бывшее до установки. Откат обеспечивается наличием для каждого действия, вносящего изменение в систему, обратного к нему. Вводя в пакет нестандартные действия, программист также должен создать обратные к ним для правильной работы отката.