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

Поэтому гораздо проще и удобнее использовать пакеты для создания инсталляторов. К ним относятся, например Visual Studio Installer, Wise Installer, InstallShield Developer и некоторые другие, не столь широко известные пакеты. Кстати, многие пакеты создания инсталляторов включают в базу данных свои дополнительные таблицы, например, в пакетах, созданных с помощью InstallShield Developer количество таблиц достигает 113! При этом никто не запрещает нам, как разработчикам, определять и добавлять свои таблицы, дополняя тем самым модель данных Windows Installer.

ПРИМЕЧАНИЕ Вышесказанное справедливо для Windows Installer версии 2.0, который позволяет распространять и устанавливать приложения для новой перспективной платформы Microsoft -.NET Framework.

Я не буду приводить полный список этих таблиц, так как он займет слишком много места. Вместо этого выделим основные группы таблиц и рассмотрим их подробнее.

В базе данных пакета инсталляции можно выделить семь основных групп:

базовые таблицы;

файловые таблицы;

таблицы записей в реестре Windows;

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

таблицы поиска;

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

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

Базовые таблицы

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

Рисунок 1. Структура группы Базовые таблицы

ПРИМЕЧАНИЕ На этой и на последующих диаграммах черный круг, соединенный с белым ромбом обозначает отношение один-ко-многим между первичным ключом в первой таблице и внешним ключом во второй.

Таким образом, мы видим, что эта группа состоит из 11 связанных таблиц. Ниже приведены их краткие описания:

Имя таблицы Краткое описание
Feature Содержит список всех функций программного продукта
Condition Содержит условия определяющие порядок установки каждой функции, описанной в таблице Feature 1
FeatureComponents Связывает функции с компонентами, иными словами - эта таблица определяет, какой функции принадлежит компонент 2
Component Содержит список всех компонентов приложения
Directory Содержит список всех каталогов, необходимых для инсталляции
PublishComponent Содержит список функций и компонентов, публикуемых для использования в других приложениях
Assembly Задает установки для сборок.NET Framework CLR и Win32
AssemblyName Задает схему для именования сборок.NET Framework CLR и Win32
Complus Содержит информацию, необходимую для установки приложений COM+
IsolatedComponent Связывает компонент, заданный в столбце Component_Application (обычно .exe) с компонентом, заданным в столбце Component_Shared (обычно .dll)
Upgrade Содержит информацию для значительных обновлений программного продукта 3

ПРИМЕЧАНИЕ

1. Если в таблице Condition нет условия для функции из таблицы Feature - это значит, что функция будет установлена в любом случае.

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

3. Я не буду останавливаться на обновлениях, так как эта тема заслуживает отдельной статьи.

Файловые таблицы

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

ПРИМЕЧАНИЕ Такие пакеты как 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