Поделиться через


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

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

Имя Описание
свойства режима Возвращает значение True только для MSIRUNMODE_SCHEDULED.
Property Property (объект сеанса) Возвращает свойство CustomActionData, свойство ProductCode или свойство UserSID.
Свойство языка (объект сеанса) Возвращает числовый идентификатор языка сеанса установки.
Метод сообщения Вызывается для обработки ошибок и прогресса.
свойства установщика Возвращает родительский объект, который используется для функций, отличных от сеанса, таких как доступ к реестру и управление конфигурацией установщика.

 

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

Имя свойства Описание
CustomActionData Значение в момент обработки пользовательского действия в таблице последовательностей. Свойство CustomActionData доступно только для отложенных пользовательских действий выполнения. Немедленные пользовательские действия не имеют доступа к этому свойству.
ProductCode Уникальный код для продукта, строка GUID .
UserSID Устанавливается установщиком как идентификатор безопасности пользователя (SID).

 

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

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

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

О Свойствах

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

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