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.