Получение сведений о контексте для пользовательских действий с отложенным выполнением
Так как скрипт установки может выполняться за пределами сеанса установки, в котором он был написан, сеанс может перестать существовать во время выполнения скрипта установки. В этом случае исходный дескриптор сеанса и свойства, заданные во время последовательности установки, недоступны для отложенного выполнения настраиваемого действия. Все функции, для которых требуется дескриптор сеанса, ограничены несколькими методами, которые могут извлекать сведения о контексте, или свойства, необходимые во время выполнения скрипта, должны быть записаны в скрипт установки. Например, отложенные пользовательские действия, вызывающие библиотеки динамической компоновки (DLL), передают дескриптор, который можно использовать только для получения очень ограниченного объема информации. Доступ к функциям, которым не требуется дескриптор сеанса, можно получить из отложенного настраиваемого действия.
Отложенное выполнение настраиваемых действий ограничено вызовом только следующих функций, требующих дескриптора.
Функция | Описание |
---|---|
MsiGetProperty | Поддерживает ограниченный набор свойств при использовании с отложенным выполнением пользовательских действий: свойство CustomActionData, свойство ProductCode и свойство UserSID . Пользовательские действия фиксации не могут использовать функцию MsiGetProperty для получения свойства ProductCode . Фиксация пользовательских действий может использовать свойство CustomActionData для получения кода продукта. |
MsiFormatRecord | Поддерживает ограниченный набор свойств при использовании с отложенными пользовательскими действиями выполнения: свойства CustomActionData и ProductCode. |
MsiGetMode | При вызове из отложенного выполнения настраиваемых действий, настраиваемых действий фиксации или откатаmsiGetMode возвращает значение True или False при запросе для проверка параметров режима MSIRUNMODE_SCHEDULED, MSIRUNMODE_COMMIT или MSIRUNMODE_ROLLBACK. Запросы на проверка любых других параметров режима выполнения из отложенного пользовательского действия, фиксации или отката возвращают значение False. |
MsiGetLanguage | Идентификатор числового языка для текущего продукта. Пользовательские действия фиксации не могут использовать функцию MsiGetLanguage . Пользовательские действия фиксации могут использовать свойство CustomActionData для получения идентификатора числового языка. |
MsiProcessMessage | Обрабатывает сообщения об ошибках или ходе выполнения из настраиваемого действия. |
Для настраиваемого действия, написанного на языке JScript или VBScript, требуется установить объект Session . Объект сеанса имеет тип , и установщик присоединяет его к скрипту с именем Session. Так как объект Session может не существовать во время отката установки, отложенное настраиваемое действие, написанное в скрипте, должно использовать один из следующих методов или свойств объекта Session для получения его контекста.
Имя | Описание |
---|---|
Свойство Mode | Возвращает значение True только для MSIRUNMODE_SCHEDULED. |
Свойство Property (объект Session) | Возвращает свойства CustomActionData, ProductCode или UserSID . |
Свойство Language (объект Session) | Возвращает идентификатор числового языка сеанса установки. |
Метод message | Вызывается для обработки ошибок и хода выполнения. |
Свойство установщика | Возвращает родительский объект , который используется для функций без сеанса, таких как доступ к реестру и управление конфигурацией установщика. |
Значения свойств, заданные во время обработки последовательности установки в скрипт, могут быть недоступны во время выполнения скрипта. Во время выполнения скрипта для пользовательских действий всегда доступен только указанный ниже ограниченный набор свойств.
Имя свойства | Описание |
---|---|
CustomActionData | Значение в момент времени настраиваемое действие обрабатывается в таблице последовательностей. Свойство CustomActionData доступно только для отложенного выполнения пользовательских действий. Непосредственные пользовательские действия не имеют доступа к этому свойству. |
ProductCode | Уникальный код продукта, строка GUID . |
UserSID | Установка установщиком идентификатора безопасности (SID) пользователя. |
Если для отложенного выполнения настраиваемого действия требуются другие данные свойств, их значения должны храниться в скрипте установки. Это можно сделать с помощью второго настраиваемого действия.
Запись значения свойства в скрипт установки для использования во время отложенного выполнения настраиваемого действия
- Вставьте небольшое настраиваемое действие в последовательность установки, которая задает интересующее свойство свойство с тем же именем, что и пользовательское действие отложенного выполнения. Например, если первичным ключом для отложенного выполнения настраиваемого действия является MyAction, задайте для свойства MyAction значение свойства X, которое необходимо извлечь. Необходимо задать свойство MyAction в последовательности установки перед пользовательским действием MyAction. Хотя любой тип настраиваемого действия может задавать данные контекста, самый простой способ — использовать настраиваемое действие назначения свойств (например, тип настраиваемого действия 51).
- Во время обработки последовательности установки установщик запишет значение свойства X в скрипт выполнения в качестве значения свойства CustomActionData.
Связанные темы