Загрузка данных


1.1. Архитектура и принципы технологии Windows Installer
Технология Windows Installer (MSI — Microsoft Installer) представляет собой стандартный интерфейс и службу операционной системы для управления жизненным циклом программного обеспечения: установкой, обновлением, модификацией и полным удалением. В отличие от традиционных скриптовых установщиков (таких как классические EXE-файлы, созданные на базе старых версий InstallShield или null-скриптов), пакет MSI является реляционной базой данных формата базы данных составного файла Microsoft (Structured Storage).
Эта база данных содержит десятки взаимосвязанных таблиц, описывающих:
 Перечень копируемых файлов и структуру каталогов.
 Ключи и параметры реестра, которые необходимо создать или изменить.
 Регистрацию COM-компонентов, библиотек типов и интерфейсов.
 Ярлыки, службы, шрифты и переменные окружения.
 Действия (Actions), выполняемые на различных этапах установки.
Преимущества использования MSI перед исполняемыми файлами сторонних разработчиков (⁠.exe⁠):
1. Транзакционность (Откат изменений): Если в процессе установки происходит критическая ошибка или пользователь отменяет операцию, служба Windows Installer выполняет механизм Rollback. На основе автоматически создаваемого сценария отката система возвращается в исходное состояние: удаляются скопированные файлы, восстанавливаются прежние ключи реестра.
2. Управление состоянием (Self-Healing / Самовосстановление): Если пользователь или стороннее приложение случайно удалит важный компонент программы (например, динамическую библиотеку ⁠.dll⁠), при следующем запуске через ярлык Windows Installer проверит целостность ключевых путей (Key Paths) компонентов и автоматически запустит процесс восстановления, скопировав недостающий файл из исходного дистрибутива или кэша.
3. Корпоративное развертывание (Групповые политики GPO): Пакеты MSI поддерживают тихую установку (Silent Install) без вывода графического интерфейса пользователя и могут централизованно распространяться администраторами домена Active Directory через групповые политики.
4. Стандартизация обновлений: Использование механизмов патчей (⁠.msp⁠) и трансформаций (⁠.mst⁠) для изменения конфигурации без полной пересборки пакета.
1.2. Структура базы данных MSI
Логическая модель MSI базируется на трех основных понятиях:
 Продукт (Product): Верхний уровень абстракции, представляющий собой законченное приложение или группу приложений (имеет уникальный идентификатор ⁠ProductCode⁠).
 Функциональная возможность (Feature): Часть приложения, которую пользователь может выбрать для установки в графическом интерфейсе (например, «Основная программа», «Документация», «Набор плагинов»).
 Компонент (Component): Минимальная неделимая единица атомарной установки. Компонент группирует связанные ресурсы (файлы, ключи реестра, ярлыки). Каждый компонент обязательно имеет один ключевой путь (⁠Key Path⁠), по которому служба инсталляции проверяет его наличие в системе.
Основные таблицы базы данных MSI:
 ⁠File⁠: Список всех файлов, входящих в дистрибутив, с указанием их размера, версии и связей с компонентами.
 ⁠Directory⁠: Иерархическое дерево каталогов целевой файловой системы.
 ⁠Registry⁠: Набор параметров реестра, разносимых по ульям (HKLM, HKCU).
 ⁠Component⁠: Перечень компонентов, их GUID и ключевых путей.
 ⁠Feature⁠: Описание логических блоков для пользовательского интерфейса.
 ⁠FeatureComponents⁠: Таблица связи «многие-ко-многим» между Feature и Component.
 ⁠InstallExecuteSequence⁠: Порядок выполнения стандартных и пользовательских действий в режиме выполнения с повышенными привилегиями.
 ⁠InstallUISequence⁠: Порядок выполнения действий, отвечающих за отрисовку диалоговых окон интерфейса.