Выбрать главу

3. Эта таблица включена в данную группу, так как в операционных системах Windows NT / 2000 / XP данные из нее пишутся в реестр.

СОВЕТ При заполнении этой группы нужно попытаться сделать таблицу Registry как можно компактней, поместив как можно больше информации в другие, более специфичные таблицы. Это делается, потому что Installer не может выделить различные типы реестровых записей в таблице Registry и, следовательно, не может использовать внутреннюю логику для задействования всех своих возможностей, например - публикации или установки по требованию. Кроме того, такой способ организации данных поможет уменьшить риск записи лишней информации о COM-серверах.

Системные таблицы

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

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

Итак, эта группа состоит из 5 таблиц, краткое описание которых дано ниже:

Имя таблицы Краткое описание
_Tables Хранит имена всех таблиц инсталляционной базы данных, включая созданные автором пакета для личных целей (например, для использования в своих операциях). Эта таблица доступна только на чтение
_Columns Хранит информацию обо всех столбцах в таблицах инсталляционной базы данных. Но временные столбцы в этой таблице не хранятся. Как и предыдущая таблица, доступна только на чтение
_Streams Содержит потоки данных OLE. Эта таблица временная и создается только при выполнении определенных SQL-запросов, например, при выполнении функции MsiRecordReadStream
_Storages Содержит хранилища данных OLE. Эта таблица также временная и создается только при выполнении определенных SQL-запросов, например, при выполнении функции MsiRecordSetStream
_Validation Эта таблица содержит информацию о столбцах в таблицах базы данных, включая их имена и диапазоны допустимых значений, а также другую важную для базы данных информацию. Используется только при проверке целостности базы данных

Таблицы поиска

Таблицы поиска используются для поиска файлов и приложений на компьютере пользователя. Чтобы найти файл, нужно сначала задать сигнатуру файла, а затем произвести поиск. Таблицы этой группы можно использовать для поиска в реестре, в данных конфигурации инсталлятора, по дереву каталогов или в .ini-файлах. При этом ищется файл или каталог с заданной уникальной сигнатурой. Затем, если файл найден, его сигнатура проверяется по таблице Signature, чтобы убедиться, что данный файл действительно тот, который нужен, а не просто еще один файл с таким же именем. Если запись в таблице поиска не связана с таблицей Signature, значит, запись ссылается на каталог, а не на файл.

Компонент, которому принадлежит нужный файл, определяется через связь между таблицами File и Component. Installer определяет подчиненность файла через таблицу компонентов, потому что каждый файл связан с одним компонентом. Местоположение компонента определяется по внешнему ключу в таблице Component, указывающему на таблицу Directory.

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

Группа таблиц поиска состоит из 7 таблиц, описание которых дано ниже:

Имя таблицы Краткое описание
Signature Содержит информацию, уникальным образом описывающую некоторый файл 1
RegLocator Эта таблица содержит информацию, необходимую для поиска файлов или каталогов по записям в реестре
IniLocator Эта таблица используется для поиска .ini-файлов. Эти файлы должны быть расположены в корневом каталоге Windows
CompLocator Эта таблица используется для поиска файлов или каталогов с использованием конфигурационных данных Windows Installer
DrLocator Эта таблица используется для поиска по дереву каталогов
AppSearch Эта таблица содержит список свойств, которые должны быть установлены, если нужный файл или каталог с заданной сигнатурой найден
CCPSearch Эта таблица содержит список сигнатур файлов, из которых хотя бы один должен быть установлен на пользовательском компьютере. Таблица используется при обновлении программ

ПРИМЕЧАНИЕ

1. Формально по документации Microsoft таблица Signature не относится к группе таблиц поиска. Но так как она нигде, кроме поиска, не используется, я позволил себе внести ее в эту группу.

Таблицы информации о программе

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

Состоит эта группа из пяти таблиц:

Имя таблицы Краткое описание
Property В этой таблице хранятся все свойства 1 пакета инсталляции
BinaryВ этой таблице хранятся двоичные данные для иконок, растров и т.п. Также здесь хранятся данные для пользовательских операций
Error Эта таблица используется для поиска шаблонов форматирования при обработке ошибок. Installer имеет свой собственный механизм обработки ошибок
Shortcut Здесь хранится вся информация, необходимая для создания файловых ярлыков
ReserveCost Эта таблица содержит информацию о необходимом дисковом пространстве для каждого компонента приложения 

ПРИМЕЧАНИЕ

1. Свойство - это глобальная переменная, которая используется Microsoft Windows Installer во время инсталляции.

Таблицы процесса инсталляции

Таблицы этой группы управляют выполнением стандартных и пользовательских операций.

ПРИМЕЧАНИЕ Тема операций в Windows Installer обширна и ей будет посвящена одна из следующих статей.

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

Имя таблицы Краткое описание
InstallUISequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции INSTALL и уровне пользовательского интерфейса - полный или сокращенный. Installer пропускает операции из этой таблицы, если уровень пользовательского интерфейса установлен в базовый или отключен1
InstallExecuteSequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции INSTALL1, 2
AdminUISequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции ADMIN и уровне пользовательского интерфейса - полный или сокращенный. Installer пропускает операции из этой таблицы, если уровень пользовательского интерфейса установлен в базовый или отключен3
AdminExecuteSequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции ADMIN2, 3
AdvtUISequence Installer не использует эту таблицу. Она должна быть удалена из базы данных или быть пустой
AdvtExecuteSequence Эта таблица содержит операции, выполняемые при активизации высокоуровневой операции ADVERTISE4

ПРИМЕЧАНИЕ

1. Все операции в последовательности инсталляции, вплоть до InstallValidate и диалогов выхода, помещаются в таблицу InstallUISequence. Все операции от InstallValidate и до конца инсталляции - в таблицу InstallExecuteSequence. Так как последняя таблица может использоваться независимо от первой (например, если пользовательский интерфейс отключен), она включает все операции инициализации, такие как LaunchConditions, CostInitialize, CostFinalize и ExecuteAction.