Пакет установщика windows msi что это

Время на прочтение
7 мин

Количество просмотров 51K

Installer pic Технология 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, измените обои рабочего стола и отследите где хранятся эти настройки). Подойдите к этому творчески, поле для экспериментов обширное.
Panda Orca pic
Скачайте MSI-инсталлятор какого-нибудь несложного приложения (например, Orca, InstEd или Firefox). Установите пакет на виртуальной машине, с помощью описанных выше утилит изучите устанавливаемые им ресурсы. Научитесь пользоваться командной строкой Windows Installer (msiexec /?), поэкспериментируйте с различными опциями установки и сравните результат. Выполните удаление приложения из командной строки, установите пакет в автоматическом (silent) режиме.
Установите InstEd или  Orca на хост-машине. Откройте MSI-пакет, который вы устанавливали на виртуальной машине, с помощью одной из этих утилит. Сравните записи основных таблиц в MSI-пакете (File, Directory, Registry) с ресурсами (файлы, папки, ключи реестра), установленными этим пакетом на вашей виртуальной машине (результат сравнения снимков состояний с помощью Panda QuickShot).
InstEd Orca pic

Немного теории

Теперь самое время взяться за теорию. Не буду дублировать официальную документацию и отдельные полезные статьи по ссылкам ниже, просто попробую перечислить вещи, с которыми нужно разобраться для начала:

  • Таблица 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 (пробная версия).

Описание формата MSI

Файл MSI относится к установочным пакетам для платформы Microsoft Windows. Данный формат файла, включает в себя наличие программного обеспечения, отвечающего за обновления ОС или установку определенных программных комплексов. MSI файл относят к документам OLE, содержащим определенные базы данных, которые состоят из наборов взаимосвязанных таблиц с заданной информацией.

Формат MSI может хранить пользовательский сценарий либо вспомогательную библиотеку DLL, последняя может требоваться в целях установки ПО. Файлы расширением .msi, возможно размещать отдельно от установочных пакетов, как в запакованном виде, так и в распакованном.

Чтобы выполнить открытие файла .msi, используют Windows Installer, являющийся штатным средством установки программ, разработанным компанией Майкрософт. Стоит отметить, что Microsoft Windows Installer, считается подсистемой и компонентом операционной системы Windows, начиная от версии Windows 2000. Установочный процесс распределяется на несколько этапов, включающих в себя сбор информации, действия, отвечающие за установку программ и возможный откат при наличии ошибок, когда операционная система начинает конфликтовать с загружаемым контентом.

Тип файла, имеющий расширение MSI, может работать и с утилитами файловой декомпрессии, к примеру Universal Extractor, The Unarchiver либо 7-Zip, такие приложения способны открыть MSI и извлечь его содержимое. Чтобы открыть файл, достаточно дважды кликнуть по нему посредством левой клавиши мыши. Примечательно, что .msi файл в Windows Vista, был заменен на расширение файла MSU. Если у пользователя не получается открыть файл MSI, есть вероятность того, что поврежден установочный пакет, файл или сам установщик Windows.


Программы для работы с MSI в Windows


Mac

Решение проблем с файлами MSI

Наиболее распространенная проблема — файл не открывается.
Мы подготовили набор программ, с помощью которых вы гарантированно сможете открыть нужный файл в вашей операционной системе.

Какой программой открыть MSI?

Пакет установщика Windows (Windows Installer) — это утилита, которая предназначена для установки и удаления программного обеспечения на компьютерах под управлением операционной системы Windows. Он предлагает стандартизированную и автоматизированную процедуру установки, которая облегчает жизнь пользователям, устранив множество потенциальных проблем и сложностей.

Пакет установщика Windows использует файлы с расширением .msi (Microsoft Installer Package). Это основной формат установочных файлов, создаваемых разработчиками программного обеспечения для Windows. Такие файлы содержат данные о программе, которую вы хотите установить, а также инструкции для ее установки и удаления.

Для использования пакета установщика Windows необходимо запустить .msi файл, который обычно предоставляется вместе с программой. При запуске установщик выполняет ряд проверок, чтобы убедиться, что ваша система соответствует требованиям программы. Затем он проводит установку файла на ваш компьютер, размещая все необходимые компоненты и настройки в соответствующих местах.

Поддержка пакета установщика Windows встроена в операционную систему Windows, поэтому вы не должны скачивать или устанавливать его отдельно. Это удобно и позволяет пользователям безопасно и надежно устанавливать и удалять программы на своих компьютерах.

Содержание

  1. Что такое пакет установщика Windows?
  2. Определение и назначение
  3. Преимущества использования

Что такое пакет установщика Windows?

MSI-пакеты часто используются разработчиками программного обеспечения, чтобы предоставить пользователю простой и надежный способ установки и обновления их приложений. Они позволяют автоматизировать установочные процессы, что упрощает жизнь как программистам, так и пользователям, особенно в случае массовых установок на несколько компьютеров.

Одной из главных особенностей MSI-пакетов является возможность установки и удаления приложений с использованием стандартных инструментов операционной системы Windows, таких как Диспетчер устройств и Панель управления. Это позволяет пользователям более легко контролировать установленное программное обеспечение и управлять его обновлениями и удалением.

MSI-пакеты также поддерживают функциональность установки на основе политик и управления группами в Windows, что позволяет администраторам сети централизованно управлять процессом установки и обновления приложений на компьютерах пользователей. Они также обеспечивают механизмы обновления приложений, позволяющие устанавливать новые версии без необходимости повторной установки отдельных пакетов.

В общем, пакет установщика Windows (MSI) – это мощный и универсальный инструмент для разработчиков программного обеспечения, который облегчает процесс установки и обновления приложений на компьютерах под управлением операционной системы Windows. Благодаря своей гибкости и интеграции со стандартными инструментами операционной системы, MSI-пакеты предоставляют удобный и надежный способ управления программным обеспечением пользователей.

Определение и назначение

Основное назначение пакетов установщика Windows — упрощение процесса установки программного обеспечения. Вместо того чтобы скачивать и устанавливать каждый файл из отдельных источников, пользователь может просто скачать один файл пакета установщика, который включает все необходимые компоненты. Пакеты установщика также обеспечивают автоматическую проверку и обновление программного обеспечения, что помогает пользователю всегда работать с последней версией приложения.

Пакеты установщика Windows имеют расширение .msi и могут быть запущены и установлены с помощью программы Windows Installer. Они обычно предоставляются разработчиками программного обеспечения на официальных сайтах или в дистрибутивах, чтобы пользователи могли легко установить необходимое приложение.

Преимущества использования

Использование пакета установщика Windows (Windows Installer) предоставляет несколько значительных преимуществ:

1. Удобство использования: благодаря стандартизированным интерфейсам и инструментам, использование пакета установщика Windows становится простым и удобным. Пользователи могут легко установить или удалить приложение с помощью простого интерфейса.

2. Надежность: пакет установщика Windows обеспечивает надежную установку приложения. Он отслеживает и проверяет целостность файлов во время установки, чтобы предотвратить возможные ошибки и повреждение системы. Это гарантирует, что приложение будет работать правильно после установки.

3. Возможность управления зависимостями: пакет установщика Windows позволяет разработчикам контролировать и управлять зависимостями приложения. Это позволяет установить все необходимые компоненты и файлы для успешной работы приложения. Автоматическое обновление зависимостей также упрощает процесс поддержки и обновления приложения.

4. Гибкость: пакет установщика Windows поддерживает различные настройки и параметры, позволяющие разработчикам настроить процесс установки в соответствии со своими потребностями. Например, можно добавлять пользовательские диалоги, настраивать реестр и создавать ярлыки.

5. Удобный механизм обновления: Windows Installer предоставляет удобный механизм обновления приложения. Пользователи могут легко обновлять приложение, сохраняя все настройки и данные. Разработчики также могут легко создавать и распространять обновления, что упрощает поддержку приложения.

6. Расширяемость: пакет установщика Windows поддерживает расширение функциональности. Разработчики могут создавать собственные пользовательские действия, добавлять динамические библиотеки и создавать дополнительные возможности, чтобы улучшить процесс установки и использования приложения.

В результате, использование пакета установщика Windows обеспечивает простоту, надежность и гибкость в процессе установки и обслуживания приложения. Это позволяет разработчикам и пользователям иметь наиболее эффективный и удобный способ установки программного обеспечения на компьютерах под управлением операционной системы Windows.

From Wikipedia, the free encyclopedia

This article is about the Microsoft Windows component. For the installation of the operating system itself, see Windows Setup.

Windows Installer

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
/ 22 July 2009; 14 years ago[1]

Operating system Microsoft Windows
Platform IA-32, x86-64, ARM32, ARM64, Itanium
Included with Windows 2000 and later
Type Installer
License Freeware
Website docs.microsoft.com/en-us/windows/win32/msi/windows-installer-portal Edit this on Wikidata
Windows Installer Package[2]

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]

  1. ^ a b «Released Versions of Windows Installer». Microsoft Developer Network. Microsoft. Retrieved 3 November 2012.
  2. ^ «File Extension .MSI Details». Filext.com. Retrieved 2013-04-24.
  3. ^ Mensching, Rob (2003-11-25). «Inside the MSI file format». MSDN Blogs. Archived from the original on 2009-01-15. Retrieved 2017-02-15.
  4. ^ Mensching, Rob (2003-10-11). «The story of Orca». MSDN Blogs. Archived from the original on 2008-12-23. Retrieved 2017-02-15.
  5. ^ Smith, Chris (2005-07-01). «Windows Installer, The .NET Framework, The Bootstrapper, and You». MSDN Blogs. Retrieved 2017-02-15.
  6. ^ Stewart, Heath (2006-02-27). «Identifying Windows Installer File Types». Retrieved 2020-04-22.
  7. ^ «Windows Installer Components». MSDN Library. Microsoft Corporation. 2012-11-30. Retrieved 2013-04-08.
  8. ^ Hodges, Buck (2011-03-17). «Visual Studio setup projects (vdproj) will not ship with future versions of VS». MSDN Blogs. Retrieved 2020-02-04.
  9. ^ «Visual Studio Installer Projects Extension». Visual Studio Blog. 2014-04-17. Retrieved 2020-02-04.
  10. ^ Internal Consistency Evaluators – ICEs
  11. ^ «Applying Full-File Updates to Client Computers». Microsoft. March 9, 2004. Archived from the original on April 10, 2004.
  12. ^ What’s New in Windows Installer 4.5
  13. ^ «Released Versions of Windows Installer (Windows)». Msdn.microsoft.com. 2012-11-30. Retrieved 2013-04-24.

External links[edit]

  • Official website Edit this at Wikidata
Устройство и развертывание пакетных файлов

Какому администратору Windows не знакомы символы msi? Служба Windows Installer (программа msiexec.exe) и ее пакетный файл .msi — фактически стандартная технология для установки приложений Windows. Преимущества пакета установки приложений Windows Installer общеизвестны. Во-первых, при сбоях в процессе установки пакет .msi отменяет выполненный фрагмент установки и восстанавливает исходное состояние компьютера, тем самым предотвращая повреждения приложений и системы. Во-вторых, .msi-упакованное приложение обладает способностью к самовосстановлению, если пользователь удаляет один из его файлов. И наконец, Windows Installer обеспечивает установку программ на пользовательских компьютерах. Основные принципы работы Windows Installer широко известны, но более глубокое понимание внутренних механизмов Windows Installer и пакетов .msi позволит строить специализированные пакеты установки приложений и упростит диагностику сбоев в процессе развертывания. Ниже приводится обзор технологии Windows Installer, а затем речь пойдет о структуре пакетов .msi и их взаимодействии со службой Windows Installer.

Технология Windows Installer

Технология Windows Installer была разработана около четырех лет назад, а позднее стала базовым компонентом операционной системы Windows 2000 Server. Windows Installer 2.0 входит в состав Windows Server 2003 и Windows XP и поддерживает сборки Microsoft .NET (блок установки в .NET). Пользователи могут получить Windows Installer либо вместе с операционной системой Windows в качестве службы Windows Installer, либо в составе комплекта разработки программ (software development kit, SDK). Служба Windows Installer представляет собой механизм, который устанавливает пакеты Windows Installer (.msi-файлы). SDK содержит спецификации и API, определяющие формат и функцию .msi-файлов. Windows Installer SDK представляет собой составную часть Platform SDK. Его можно загрузить по адресу http://www.microsoft.com/msdownload/platformsdk/ sdkupdate/sdkinfo.htm. Разработчики и поставщики инструментов упаковки программ, такие как InstallShield Software, OnDemand Software и Wise Solutions (в настоящее время подразделение компании Altiris), применяют SDK для подготовки пакетов установки приложений. Программисты часто используют инструменты упаковки приложений, которые преобразуют старые процедуры установки в формат Windows Installer, чтобы скрыть от пользователей сложность технологии Windows Installer.

Продукты, функции и компоненты

.msi-файл представляет собой сложную базу инструкций по установке приложений, которая содержит десятки таблиц, сотни столбцов и иногда вложенные файлы. В базе данных хранится информация о требованиях операционной системы к установке приложения, этапах установки и даже диалоговых окнах, выводимых на экран.

.msi-файл имеет трехуровневую структуру. Высший уровень — продукт, собственно приложение. Продукту присваивается уникальный код — глобально уникальный идентификатор (globally unique identifier, GUID). На следующем уровне располагаются функциональные блоки внутри продукта. Функциональные блоки имеют имена и могут быть добавлены по желанию пользователя. На экране 1 показан пример функциональных блоков в приложении — в данном случае Microsoft Office Access и Microsoft Office Excel в пакете установки Microsoft Office. Функциональный блок — это единый блок для установки внутри пакета Windows Installer. Устанавливаются (или удаляются) функциональные блоки пакета, а не отдельные файлы.


Экран 1. Функциональные блоки приложения, упакованного для Windows Installer

На экране 1 видно, что Excel состоит из множества функциональных подблоков, таких как Help и Spreadsheet Templates. Во время установки пользователь может указать подблоки, которые следует установить на компьютере локально или запускать с сервера, добавить при первом обращении к ним (обозначается единицей в пиктограмме подблока) или вообще не требуется устанавливать. Метод «объявления» (advertisement) подблоков описан по врезке «Возможности объявлений».

Функциональные блоки состоят из компонентов, которые представляют третий уровень иерархии .msi-файла. Компонент — это базовая единица пакета Windows Installer и строительный блок приложения. Компонент может быть файлом или группой файлов, параметром реестра, ярлыком или ресурсом (например, пиктограммой). С компонентом связан ключевой путь (key path). Ключевой путь определяет файл или параметр, без которого невозможна полная установка компонента. Ключевой путь — основа механизма самовосстановления пакетов на базе Windows Installer. При ремонте .msi-упакованного приложения служба Windows Installer проверяет полноту всех ключевых путей компонентов. Если ключевой путь какого-нибудь компонента отсутствует, служба Windows Installer определяет, какому функциональному блоку принадлежит компонент, и повторно устанавливает функциональный блок. Таким образом, время, необходимое для ремонта развернутого приложения, отчасти зависит от числа компонентов в пакете и числа компонентов в функциональном блоке, содержащем испорченный компонент.

База данных Windows Installer

Как отмечалось ранее, .msi-файл представляет собой набор инструкций по установке, организованных в таблицы. Windows Installer SDK определяет каждую таблицу и столбец. С помощью редактора баз данных Orca из Windows Installer SDK можно просматривать и редактировать содержимое .msi-файла. .msi-файл установки для Orca находится в подкаталоге in установочного каталога Platform SDK (например, c:program filesplatform sdkin). После установки Orca можно открыть любой .msi-файл. В левой панели интерфейса Orca представлен список таблиц файла. Выделив таблицу, в правой панели можно увидеть ее строки и столбцы.


Экран 2. Таблицы базы данных приложения, упакованного для Windows Installer

На экране 2 показана таблица LaunchCondition пакета Windows Installer для Group Policy Management Console (GPMC). В правой панели таблицы представлены минимальные требования к операционной системе и платформе для установки GPMC. В столбце Condition содержатся условия, которые должны быть выполнены в процессе установки. В столбце Description описаны минимальные требования для набора условий. Приступая к установке приложения, Windows Installer проверяет, удовлетворены ли условия запуска, прежде чем продолжить установку.

Таблицы последовательностей (sequence table) представляют собой ядро базы данных; в них перечислены действия, которые служба Windows Installer должна выполнить в процессе установки, и порядок их выполнения. Например, в таблице последовательностей указывается, что механизм Installer должен сначала проверить условия запуска в таблице LaunchCondition, затем скопировать исходные файлы в каталог назначения и подготовить набор элементов реестра. Таблицы последовательностей бывают трех типов: Admin, Advertisement и Install. Тип таблицы последовательностей, используемый Windows Installer, зависит от типа выполняемой процедуры установки. Описания типов таблиц последовательностей даны в таблице 1.

С каждой таблицей последовательностей связаны две вспомогательные таблицы. Одна из них — InstallUISequence — определяет диалоговые окна пользовательского интерфейса, которые должны отображаться при интерактивной (управляемой пользователем) установке. Другая таблица — так называемая таблица «исполнительной последовательности» (execute sequence; InstallExecuteSequence) — определяет шаги, необходимые для установки.

Последовательность состоит из набора заранее определенных стандартных функций, которые перечислены в столбце Action таблицы InstallExecuteSequence. Стандартные функции выполняют разнообразные задачи, в том числе копирование файлов, поиск новых версий программы и определение размера дискового пространства, доступного при установке. В документации SDK и Orca приведены подробные сведения о назначении конкретного пакета Windows Installer. С помощью Orca можно подготовить специальные операции для задач, которые нельзя решить с использованием стандартных функций пакета Windows Installer. Специальная операция может быть DLL, составленной пользователем, и даже сценарием VBScript для таких действий, как поиск в Active Directory (AD) определенных значений перед продолжением установки.

Таблица Property — еще одна важная часть базы данных .msi. Свойства представляют собой постоянные величины, задавая которые можно управлять ходом установки. В сущности, свойства есть переменные среды для .msi-файла. В пакетах Windows Installer часто используется свойство ALLUSERS, которое указывает процедуре установки, каким образом хранится информация о конфигурации приложения — для пользователя или для компьютера. Имена свойств чувствительны к регистру и их можно указывать в командной строке во время установки или используя трансформацию.

Трансформации, исправления и модули слияния

.msi-файл, полученный от поставщика, часто не располагает всем необходимым для развертывания пакета в конкретной среде. Например, потребитель может пожелать развернуть пакет автоматически с помощью инструмента развертывания программного обеспечения или установить только определенные функциональные блоки. В такой ситуации могут пригодиться трансформации. Трансформация — это специальный тип файла базы данных .msi, обычно имеющего расширение .mst. Трансформации применяются к процедуре развертывания приложения во время установки. В сущности, они изменяют выбираемые по умолчанию значения в пакете .msi, управляя процессом установки. Измененные значения в .msi-файле не сохраняются; они просто определяют, как будет протекать конкретная установка.

Файлы исправлений (patch file или .msp-файлы) отличаются от трансформаций. Как правило, поставщик выпускает файл исправлений, когда нужно модернизировать продукт, не прибегая к его глубокой переработке. Примером исправлений могут служить обновления для системы безопасности. После установки исправления в экземпляре .msi-файла, хранящемся в кэше рабочей станции, производятся постоянные изменения. Чтобы новые пользователи в будущем получали обновленные файлы, следует применить файлы исправлений к исходному пакету приложения.

Еще один вариант .msi-файла — модуль слияния (merge module, или .msm-файл), набор компонентов, многократно используемых при установке приложений. Например, в различных программах независимых поставщиков применяются компоненты Microsoft Data Access Components (MDAC). Вместо того чтобы воспроизводить установку общих компонентов в каждом новом .msi-пакете, авторы пакетов приложений могут задействовать модули слияния, предоставляемые поставщиками общих компонентов. Модули слияния — упрощенные файлы базы данных .msi, содержащие только общие функциональные блоки и компоненты для процедур установки приложений. Часто собственно компонентные файлы встраиваются в .msm-файл, что позволяет использовать модули слияния с разными пакетами. Затем .msm-файлы вставляются в основной пакет Windows Installer для данного приложения на этапе создания пакета.

При подготовке нового пакета установки файлы приложения можно вставить в .msi-файл. Как правило, файлы вставляются в виде встроенных файлов .cab, которые представляют собой сжатые наборы файлов, похожие на .zip-файлы. В .msi-файл удобно вставлять .cab-файлы не очень большого размера. Например, в Office имеются отдельные .msi- и .cab-файлы, так как размеры .cab-файлов Office достигают нескольких сотен мегабайт. Однако, упаковав все необходимые файлы малого приложения в .msi-файл, можно получить компактный файл, который удобно распространять среди пользователей. Извлечь встроенный .cab-файл из .msi-файла можно с помощью инструмента msidb.exe пакета Windows Installer SDK.

Служба Windows Installer

Пакеты Windows Installer и служба Windows Installer взаимозависимы: они не могут существовать друг без друга. Служба Installer по умолчанию устанавливается на всех компьютерах с версиями операционной системы, выпущенными после Windows 2000: редистрибутивную версию (автономную версию службы Installer и сопутствующие DLL) можно развернуть на компьютерах Windows NT Server 4.0 и Windows 9x. Служба Installer работает в контексте привилегированной пользовательской учетной записи LocalSystem. Чтобы запустить службу Windows Installer, нужно дважды щелкнуть на .msi-файле (например, в Windows Explorer); при запуске службы формируется новый процесс Installer (msiexec.exe) в контексте полномочий пользователя. После того как Windows Installer завершит установку приложения, служба Installer закрывается до следующего обращения к ней.

Служба Windows Installer обеспечивает набор функций, удобных для развертывания программ, особенно при использовании совместно с функцией Software Installation в Group Policy. Главная среди этих функций — повышение полномочий (privilege escalation). Когда обычный пользователь пытается установить приложение на своем компьютере, дважды щелкнув на .msi-файле, его полномочий для выполнения установки не всегда достаточно. Однако при развертывании приложения с помощью функции Software Installation групповой политики служба Windows Installer выполняет установку в своем контексте безопасности LocalSystem.

В частности, служба Installer создает новый процесс msiexec.exe в контексте безопасности пользователя для выполнения той части установки, которая проводится в пользовательском профиле. Служба Installer использует собственный повышенный контекст безопасности (учетную запись LocalSystem) для выполнения специфической для данного компьютера части процедуры установки, для проведения которой у пользователя полномочий нет. Приложения, развернутые таким способом, называются управляемыми (managed applications). Повышение полномочий, используемое Windows Installer для управляемых приложений, как правило, возможно только при применении групповой политики, хотя метод доступен и вне процедур на базе Group Policy Object (GPO), через политику Administrative Template.

В рамках взаимозависимых отношений между Group Policy и службой Windows Installer реализованы объявления (advertisement). Как отмечалось ранее, при связывании программы с пользователем в Group Policy, в сущности, производится установка с объявлением. Таким образом, механизм Windows Installer обрабатывает сценарий объявления приложения (файл .aas), а не непосредственно .msi-файл. Файл .aas создается, когда для развертывания приложения используется Group Policy. Чтобы создать .aas-файл, редактор Group Policy Editor (GPE) вызывает функцию, экспортируемую из msi.dll (основная DLL, используемая msiexec.exe), которая генерирует уникальный сценарий объявлений внутри GPO. Таким образом, когда механизм Windows Installer обрабатывает сценарий объявлений, ему известно местонахождение соответствующего .msi-файла и части приложения, которые нужно объявить. Другими словами, процедура установки программ на базе GPO тесно связана со службой Windows Installer и наоборот.

Хранение файлов Installer на рабочей станции

Рассмотрим, что происходит на рабочей станции, когда служба Windows Installer устанавливает пакет .msi. Во-первых, чтобы обеспечить отмену действий в случае сбоя, Installer делает резервные копии всех замененных файлов, сохраняя их во временной папке на жестком диске пользователя, обычно C:config.msi. Заглянув в эту папку в ходе установки, можно увидеть в ней временные файлы с необычными именами, созданные службой Installer. После завершения установки служба Installer удаляет временные файлы.

Закончив установку, Windows Installer сохраняет экземпляр ассоциированного .msi-файла и любые трансформации, использовавшиеся Windows Installer при установке приложения, в папке \%windir%installer, назначая файлам уникальные условные имена (например, 19fe9b79.msi). Файлы в \%windir%installer в действительности представляют собой кэшированные копии всех .msi-файлов, обработанных службой Windows Installer на компьютере. Благодаря наличию кэшированных копий пользователь может изменить или удалить приложение, не обращаясь к оригинальному пакету установки, который может находиться на разделяемом диске сервера, недоступном мобильному пользователю. Windows отслеживает все развернутые приложения на базе .msi; имеющиеся функциональные блоки, компоненты и исправления, а также имя кэшированного .msi-файла в реестре.

Чтобы выяснить, какой .msi-файл с непонятным именем соответствует данному приложению на рабочей станции, следует перейти в раздел реестра HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindows CurrentVersionInstallerUserData. Разделы упорядочены по SID имени пользователя; первой показана учетная запись LocalSystem, S-1-5-18, далее обычно перечисляются все приложения, установленные на компьютере. Список доступных пользователю программ приведен под соответствующим SID пользователя.

Запуск Installer Files из командной строки и в сценариях

Существует два дополнительных способа запуска пакетных установок Windows Installer — из командной строки и сценария. С помощью msiexec.exe можно выполнять различные процедуры установки из командной строки. Полный список функций командной строки для msiexec.exe приведен в статье Microsoft «Command-Line Switches for the Microsoft Windows Installer Tool» по адресу http://support.microsoft.com/?kbid=227091. Например, из командной строки можно установить один функциональный блок в прикладном пакете, такой как инструменты консоли DNS в пакете Windows 2003 Administration Tools (adminpak.msi). С помощью Orca следует отыскать нужное имя функционального блока — в данном случае FeDNSConsole — и запустить msiexec.exe из командной строки, чтобы произвести установку:

msiexec /I adminpak.msi ADDLOCAL=FeDNSConsole

Свойство ADDLOCAL используется данной командой, чтобы указать службе Windows Installer функциональные блоки пакета, которые необходимо установить. Метод командной строки используется вместо выбора функциональных блоков пользователями или установки отдельных блоков администратором с помощью файла трансформации.

В Windows Installer SDK имеются примеры, поясняющие использование сценариев Windows Script Host (WSH) для взаимодействия со службой Windows Installer и пакетами .msi. Объект WindowsInstaller.Installer располагает методами и свойствами, которые можно применять в сценариях для выполнения таких операций, как подготовка списка всех .msi-пакетов, имеющихся в системе, добавление .cab-файла в базу данных .msi, применение трансформации в ходе установки и сравнение двух .msi-файлов базы данных. Более подробную информацию о сценарных объектах Windows Installer можно получить, изучив сценарии примеров Installer SDK в папке http://msdn.microsoft.com/library/default.asp?url=/library/en-us/msi/setup/using_the_automation_interface.asp.

Как было показано выше, задачи Windows Installer не ограничиваются простым щелчком на .msi-файле. Мощная технология Windows Installer позволяет гибко и быстро устанавливать программы, но для эффективного использования службы необходимо понимать принципы ее работы.

Даррен Мар-Элиа — редактор журнала Windows & NET Magazine. С ним можно связаться по адресу: dmarelia@winnetmag.net


Возможности объявлений

Объявление приложений — компонент Windows Installer, который широко используется при развертывании приложений с помощью Group Policy. Объявленное приложение на самом деле не устанавливается на настольном компьютере пользователя, обозначается лишь «присутствие» приложения. Это может быть ярлык на рабочем столе или в меню Start, ассоциирование файлов в реестре и даже COM-компонент, зарегистрированный в HKEY_CLASSES_ROOT. Объявление оповещает пользователя о том, что приложение установлено и готово к использованию. Однако сами файлы приложения разворачиваются лишь после первого обращения пользователя к приложению. Преимущество объявлений заключается в том, что приложения доступны, но устанавливаются лишь после того, как в них возникает необходимость. Благодаря объявлениям, администратору, обслуживающему 20 тыс. настольных компьютеров, приходится обновлять приложения только на компьютерах, пользователи которых действительно работают с этими программами. Недостаток объявлений — вынужденное ожидание в течение нескольких минут, пока система устанавливает приложение для первого запуска.


Типы таблиц последовательностей

Тип таблицы последовательностей Описание
Admin Используется для административных установок приложений (с сервера)
Advertisement Используется для установки с объявлениями
Install Используется для интерактивных или автоматических установок на локальном компьютере — наиболее распространенный тип

Другие наши интересноые статьи:

  • Панель быстрого доступа для windows 10 скачать
  • Панели быстрого доступа для windows 10
  • Пакет средств разработки программного обеспечения sdk для windows
  • Панель быстрого доступа windows 10 программа
  • Пандора специалист для windows скачать

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии