Таблицы - это конечно, хорошо. Но как добраться до содержимого этих таблиц? И как изменять эти таблицы? То есть, говоря иными словами, как можно работать с базой данных инсталляционного пакета?
Для этого существует 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.
• Функции выбора - эта группа функций используется для работы с функциями приложения и компонентами.Также в нее входят функции для установки уровня инсталляции и оценки места на диске, необходимого как для установки отдельных компонентов приложения, так и для всего продукта в целом
• Функции пользовательского интерфейса - эти функции используются в инструментальных средствах для предварительного просмотра диалоговых окон и различных