Доступ к текущему сеансу установщика из пользовательского действия

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

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

Библиотеки динамической компоновки

Для доступа к выполняющейся установке пользовательские действия, вызывающие библиотеки динамической компоновки (DLL), передают дескриптор типа MSIHANDLE для текущего сеанса в качестве единственного аргумента в точку входа DLL с именем в столбце Target таблицы CustomAction. Так как установщик предоставляет этот дескриптор, настраиваемое действие не должно закрывать его, например, чтобы получить дескриптор hInstall от установщика, функция настраиваемого действия объявляется следующим образом.

UINT __stdcall CustomAction(MSIHANDLE hInstall)

Для доступа только для чтения к текущей базе данных получите дескриптор базы данных, вызвав MsiGetActiveDatabase. Дополнительные сведения см. в разделе Получение дескриптора базы данных.

Создание и запуск скриптов PowerShell из консоли Configuration Manager

Пользовательские действия, написанные на VBScript или JScript, могут получить доступ к текущему сеансу установки с помощью объекта Session. Установщик создает объект Session с именем Session, который ссылается на текущую установку. Для доступа только для чтения к текущей базе данных используйте свойство Database объекта Session .

Так как скрипт выполняется из контекста объекта Session , не всегда требуется полное определение свойств и методов. В следующем примере при использовании VBScript ссылка Me может заменить объект Session . Например, следующие три строки эквивалентны.

Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1

Исполняемые файлы

Вы не можете получить доступ к текущему сеансу установщика из пользовательских действий, которые вызывают исполняемые файлы, запущенные с помощью командной строки, например Тип настраиваемого действия 2 и Тип настраиваемого действия 18.

Пользовательские действия с отложенным выполнением

Вы не можете получить доступ к текущему сеансу установщика или ко всем данным свойств из отложенного пользовательского действия выполнения. Дополнительные сведения см. в разделе Получение сведений о контексте для пользовательских действий отложенного выполнения.

Доступ к базе данных или сеансу из пользовательского действия