Доступ к текущему сеансу установщика из пользовательского действия
Неотложенные пользовательские действия, которые вызывают динамические библиотеки или скрипты , получают доступ к запущенной установке для запроса или изменения атрибутов текущего сеанса установки. Только один экземпляр сеанса может существовать для каждого процесса, и скрипты пользовательских действий не должны пытаться создать другой сеанс.
Пользовательские действия могут добавлять, изменять или удалять временные строки, столбцы или таблицы из базы данных. Пользовательские действия не могут изменять постоянные данные в базе данных, например данные, которые являются частью базы данных, хранящейся на диске.
библиотеки Dynamic-Link
Чтобы получить доступ к запущенной установке, пользовательские действия, вызывающие библиотеки динамических ссылок (DLL), получают дескриптор типа MSIHANDLE для текущего сеанса, который передается в качестве единственного аргумента на точку входа DLL, указанную в целевом столбце таблицы CustomAction . Поскольку установщик предоставляет этот дескриптор, настраиваемое действие не должно закрывать его. Например, чтобы получить дескриптор hInstall от установщика, функция настраиваемого действия объявляется следующим образом.
UINT __stdcall CustomAction(MSIHANDLE hInstall)
Для доступа только для чтения к текущей базе данных получите дескриптор базы данных, вызвав MsiGetActiveDatabase. Дополнительные сведения см. в «Получение дескриптора базы данных».
Пользовательские действия, написанные на VBScript или JScript, могут получить доступ к текущему сеансу установки с помощью объекта сеанса . Установщик создает объект сеанса с именем Session, который ссылается на текущую установку. Для доступа только для чтения к текущей базе данных используйте свойство Database объекта сеанса.
Так как скрипт выполняется из контекста объекта сеанса , не всегда требуется полностью квалифицировать свойства и методы. В следующем примере при использовании VBScript ссылка "Me" может заменить объект сессии , например, следующие три строки эквивалентны.
Session.SetInstallLevel 1
Me.SetInstallLevel 1
SetInstallLevel 1
Вы не можете получить доступ к текущему сеансу установщика из пользовательских действий, которые вызывают исполняемые файлы, запущенные с помощью командной строки, например, тип пользовательского действия 2 и тип пользовательского действия 18.
Настраиваемые действия с отложенным выполнением
Невозможно получить доступ к текущему сеансу установщика или ко всем данным свойств из пользовательского действия с отложенным выполнением. Дополнительные сведения см. в разделе Получение сведений о контексте для пользовательских действий отложенного выполнения.
Связанные разделы