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

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

 

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

Запись значения свойства в скрипт установки для использования во время отложенного выполнения настраиваемого действия

  1. Вставьте небольшое настраиваемое действие в последовательность установки, которая задает интересующее свойство свойство с тем же именем, что и пользовательское действие отложенного выполнения. Например, если первичным ключом для отложенного выполнения настраиваемого действия является MyAction, задайте для свойства MyAction значение свойства X, которое необходимо извлечь. Необходимо задать свойство MyAction в последовательности установки перед пользовательским действием MyAction. Хотя любой тип настраиваемого действия может задавать данные контекста, самый простой способ — использовать настраиваемое действие назначения свойств (например, тип настраиваемого действия 51).
  2. Во время обработки последовательности установки установщик запишет значение свойства X в скрипт выполнения в качестве значения свойства CustomActionData.

Сведения о свойствах

Использование свойств

Справочник по свойствам