ПРИМЕЧАНИЕ Такие пакеты как InstallShield Developer и Wise Installer позволяют не придерживаться такого жесткого порядка заполнения таблиц. Но рекомендуется все-таки тщательно продумать структуру пакета инсталляции перед тем, как начать заполнять базу данных.
Структура этой группы показана на рисунке 2.
Рисунок 2. Структура группы Файловые таблицы
Эта группа состоит из 15 таблиц. Их краткое описание дано ниже.
Имя таблицы Краткое описание File В этой таблице перечислены файлы, входящие в инсталляцию. Так как файлы привязаны к компонентам, их использующим, эта таблица связана с таблицей
Component RemoveFile В этой таблице содержится список файлов, которые необходимо удалить при выполнении операции
RemoveFiles Font Эта таблица содержит список файлов шрифтов, которые необходимо зарегистрировать в системе SelfReg Эта таблица содержит список саморегистрирующихся модулей (то есть библиотек динамической компоновки, экспортирующих функции
DllRegisterServer и
DllUnregisterServer). Installer не регистрирует
EXE-файлы Media Эта таблица описывает набор дисков инсталляции BindImage Эта таблица содержит информацию о привязках исполняемых файлов или DLL 1 MoveFile Эта таблица содержит список файлов, которые нужно перенести или скопировать во время инсталляции из исходного каталога в заданный каталог DuplicateFile Эта таблица содержит список файлов, которые необходимо продублировать при инсталляции: либо в другой каталог с тем же именем, что и исходный файл, либо в тот же каталог, но с другим именем IniFile В этой таблице содержится информация для создания
.ini-файлов, необходимых приложению. Эти файлы создаются, если содержащий их компонент выбран для инсталляции в локальном режиме или с источника инсталляции RemoveIniFile Эта таблица содержит информацию, которую необходимо удалить из
.ini-файлов при инсталляции приложения Environment Эта таблица используется для задания переменных окружения 2 Icon Эта таблица хранит файлы иконок. Каждая иконка этой таблицы во время инсталляции копируется в отдельный файл на диске 3 FileSFPCatalog Эта таблица используется системой Windows File Protection в ОС Windows Me SFPCatalog Эта таблица также используется системой Windows File Protection в ОС Windows Me MsiFileHash Эта таблица хранит 128-разрядное хэш-значение для исходных файлов в пакете инсталляции 4
ПРИМЕЧАНИЕ
1. Для получения более подробной информации о привязках смотрите описание функции Windows API BindImageEx
2. В операционных системах Windows95/98 в этой таблице также хранится список изменений в файле autoexec.bat
3. Таблица Icon используется при публикации программных продуктов
4. Таблица MsiFileHash может использоваться только для файлов, не содержащих информации о версиях. Windows Installer может использовать информацию из этой таблицы, чтобы не выполнять лишнее копирование файлов, уже содержащихся на пользовательском компьютере и совпадающих с файлами из пакета инсталляции.
Таблицы записей в реестре Windows
Эта группа содержит таблицы, описывающие различные виды информации в реестре Windows. Структура группы показана на рисунке 3.
Рисунок 3. Структура группы таблиц Записи в реестре Windows.
Внимательный читатель, конечно же, заметил, что на рисунке присутствуют таблицы из других групп, такие, как Component, Feature и File. Эти таблицы включены сюда для того, чтобы более ясно показать логику работы этой группы. Кроме того, здесь присутствуют таблицы, уже упоминавшиеся в других группах, но здесь играющие немного другую роль (это таблицы SelfReg и Environment).
Таким образом, эта группа включает 11 таблиц, краткое описание которых дано ниже:
Имя таблицы Краткое описание Extension Эта таблица содержит список расширений файлов, используемых устанавливаемой программой, вместе с привязанными к этим расширениям функциями и компонентами Verb Эта таблица связывает информацию о командах, связанных с расширениями файлов из предыдущей таблицы. Наличие этих таблиц в связке с таблицей
Feature позволяет реализовать возможность
публикации приложения TypeLib Эта таблица содержит записи, необходимые для регистрации библиотек типов 1 MIME Эта таблица связывает типы MIME c CLSID или расширением файла. Это позволяет связать таблицы
MIME и
Feature, и обеспечить еще один путь для
публикации приложения SelfReg Смотрите описание в группе
Файловые операции 2 Class Эта таблица содержит информацию, необходимую для работы COM-серверов ProgId Эта таблица содержит информацию о ProgID для COM-серверов AppId Эта таблица используется для конфигурирования DCOM-серверов Environment Смотрите описание в группе
Файловые таблицы 3 Registry Эта таблица содержит всю прочую информацию, не вошедшую в другие таблицы. Это может быть пользовательская информация, данные, установки по умолчанию и т.д. RemoveRegistry Эта таблица содержит информацию о записях в реестре, которые нужно удалить при инсталляции приложения
ПРИМЕЧАНИЕ
1. При публикации приложения никаких записей о библиотеках типов не делается. Запись производится только в момент установки компонента, связанного с библиотекой.
2. Использование саморегистрации в Windows Installer НЕ РЕКОМЕНДУЕТСЯ и включено только для обеспечения обратной совместимости с предыдущими технологиями установки программ. Вместо этого рекомендуется заполнить соответствующие таблицы нужной информацией, аналогичной той, что прописывает нужный модуль при вызове его функции DllRegisterServer.
3. Эта таблица включена в данную группу, так как в операционных системах Windows NT / 2000 / XP данные из нее пишутся в реестр.
СОВЕТ При заполнении этой группы нужно попытаться сделать таблицу Registry как можно компактней, поместив как можно больше информации в другие, более специфичные таблицы. Это делается, потому что Installer не может выделить различные типы реестровых записей в таблице Registry и, следовательно, не может использовать внутреннюю логику для задействования всех своих возможностей, например - публикации или установки по требованию. Кроме того, такой способ организации данных поможет уменьшить риск записи лишней информации о COM-серверах.
Эта группа содержит информацию о структуре инсталляционной базы данных. Запросы к таблицам этой группы позволяют получить разнообразную информацию о пакете инсталляции любого приложения.
Диаграмму этой группы приводить смысла нет. Некоторые таблицы этой группы - статические, они создаются при компиляции пакета инсталляции и не связаны с другими таблицами. Другая же часть вообще не хранится в базе данных, а создается только на время выполнения SQL-запросов.
Итак, эта группа состоит из 5 таблиц, краткое описание которых дано ниже:
Имя таблицы Краткое описание _Tables Хранит имена всех таблиц инсталляционной базы данных, включая созданные автором пакета для личных целей (например, для использования в своих операциях). Эта таблица доступна
только на чтение _Columns Хранит информацию обо всех столбцах в таблицах инсталляционной базы данных. Но временные столбцы в этой таблице не хранятся. Как и предыдущая таблица, доступна
только на чтение _Streams Содержит потоки данных OLE. Эта таблица временная и создается только при выполнении определенных SQL-запросов, например, при выполнении функции
MsiRecordReadStream _Storages Содержит хранилища данных OLE. Эта таблица также временная и создается только при выполнении определенных SQL-запросов, например, при выполнении функции
MsiRecordSetStream _Validation Эта таблица содержит информацию о столбцах в таблицах базы данных, включая их имена и диапазоны допустимых значений, а также другую важную для базы данных информацию. Используется только при проверке целостности базы данных