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

2. Все пользовательские операции, выполняемые в этой последовательности, при необходимости использования пользовательского интерфейса должны пользоваться функцией API MsiProcessMessage, вместо диалогов из таблицы Dialog.

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

4. Таблица AdvtExecuteSequence может содержать только ограниченный набор стандартных операций. Пользовательские операции не должны содержаться в этой таблице.

К другой группе относятся таблицы, позволяющие расширять функциональность пакета инсталляции. Достаточно часто, особенно при установке сложных программных продуктов, встроенной функциональности Windows Installer, основанной на стандартных операциях, не хватает. Здесь и приходит на помощь таблица Custom Action, позволяющая создавать и хранить в инсталляционной базе данных информацию для выполнения пользовательских операций.

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

Следующая группа таблиц расширяет возможности инсталлятора по манипулированию файлами и каталогами в процессе инсталляции.

Имя таблицы Краткое описание
RemoveFile Эта таблица содержит список файлов, которые необходимо удалить при инсталляции
RemoveIniFile Эта таблица содержит информацию, которую нужно удалить из .ini-файлов при инсталляции приложения
RemoveRegistry Эта таблица содержит информацию, которую нужно удалить из реестра при инсталляции связанного с ней компонента
CreateFolder Содержит список каталогов, которые необходимо создать при инсталляции приложения 1
MoveFile Эта таблица содержит список файлов, которые нужно перенести или скопировать во время инсталляции из исходного каталога в заданный каталог

ПРИМЕЧАНИЕ

1. Хотя Installer и создает при инсталляции каталоги по мере необходимости, они удаляются, если не содержат файлов. Каталоги, перечисленные в таблице CreateFolder, не удаляются до тех пор, пока не будет удален связанный с ними компонент.

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

Последнее слово о таблицах

Список таблиц, используемых Windows Installer, весьма велик. И вполне естественно, что в рамках статьи невозможно рассмотреть все из них. Многие из таблиц, не упоминавшихся здесь, будут рассмотрены в следующих статьях, при рассмотрении более узких тем.

Windows Installer API

Таблицы - это конечно, хорошо. Но как добраться до содержимого этих таблиц? И как изменять эти таблицы? То есть, говоря иными словами, как можно работать с базой данных инсталляционного пакета?

Для этого существует Windows Installer API. Этот API весьма обширен и включает в себя несколько десятков функций, различных констант и агрегатных типов данных. Все функции Windows Installer API поддерживают как ANSI, так и Unicode. Это позволяет использовать их как в операционных системах на основе Windows NT, для которых кодировка Unicode является родной, так и в системах Windows 9x, ограниченно поддерживающих Unicode.

Все функции Windows Installer API легко найти по префиксу - Msi.

Функции API можно условно разделить на две большие группы:

• Функции общего назначения.

• Функции доступа к инсталляционной базе данных.

Функции общего назначения

Эта большая группа функций делится на следующие группы:

• Функции пользовательского интерфейса и журналирования.

• Функции управления дескрипторами.

• Функции конфигурирования и инсталляции.

• Компоненто-ориентированные функции.

• Функции приложения.

• Функции статуса системы.

• Функции запросов.

• Функции исправлений.

Функции доступа к инсталляционной базе данных

Функции доступа к базе данных используются в пользовательских операциях, выполняемых во время инсталляции программ, и в инструментальных утилитах (например, в тех же ORCA и MsiSpy из Platform SDK). Некоторые из этих функций используют подмножество языка SQL для запросов к базе данных.

Функции доступа к базе данных можно разделить на следующие группы:

Общие функции - эта группа функций используется для открытия, закрытия базы данных, работы с представлениями базы данных.

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

Функции обработки записей - это различные функции для манипулирования записями базы данных. С помощью этих функций можно извлекать данные из базы и помещать их туда. В Windows Installer поддерживаются следующие типы записей: String - строка, заканчивающаяся нулем, Integer - 32-битное целое число и Stream - поток байтов произвольной длины.

Функции для работы c суммарной информацией - эта группа функций позволяет извлекать из базы и записывать в базу свойства суммарной информации.

Функции доступа к состоянию инсталлятора - эти функции позволяют получать и задавать различные свойства инсталлятора.

Функции выполнения операций - эта группа функций используется для выполнения пользовательских и стандартных операций, вычисления условий и обработки сообщений.

Функции поиска - эти функции позволяют получать и записывать информацию в таблице Directory.

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

Функции пользовательского интерфейса - эти функции используются в инструментальных средствах для предварительного просмотра диалоговых окон и различных

Заключение

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

Источники информации

Документация к Platform SDK

Microsoft Developer Network

InstallShield Corporation

http://www.installsite.org