Параметры планирования выполнения настраиваемых действий

Так как настраиваемое действие можно запланировать как в пользовательском интерфейсе, так и в таблицах последовательностей выполнения, а также в процессе службы или клиента, настраиваемое действие может выполняться несколько раз.

Обратите внимание, что установщик:

  • По умолчанию выполняет действия в таблице последовательностей немедленно.
  • Не выполняет действие, если поле условного выражения таблицы последовательностей имеет значение False.
  • Обрабатывает таблицу последовательностей пользовательского интерфейса в клиентском процессе, если для внутреннего пользователя задан полный режим пользовательского интерфейса (описание уровней пользовательского интерфейса см. в разделе MsiSetInternalUI ).
  • Служба, зарегистрированная по умолчанию при использовании Windows 2000. В этом случае таблица последовательности выполнения обрабатывается в службе установщика.

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

(по умолчанию)

Шестнадцатеричное: 0x00000000

Десятичное число: 0

Всегда выполняйте. Действие может выполняться дважды, если оно присутствует в обеих таблицах последовательностей.

msidbCustomActionTypeFirstSequence

Шестнадцатеричное: 0x00000100

Десятичное число: 256

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

msidbCustomActionTypeOncePerProcess

Шестнадцатеричное: 0x00000200

Десятичное число: 512

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

msidbCustomActionTypeClientRepeat

Шестнадцатеричное: 0x00000300

Десятичное число: 768

Выполнение выполняется только в том случае, если выполняется на клиенте после выполнения последовательности пользовательского интерфейса. Действие выполняется только в том случае, если последовательность выполнения выполняется на клиенте после последовательности пользовательского интерфейса. Может использоваться для предоставления логики или для подавления обработки, связанной с пользовательским интерфейсом, если она уже выполнена для клиентского сеанса.

Обратите внимание, что для выполнения настраиваемого действия в двух разных режимах выполнения создайте две записи в таблице CustomAction . Например, чтобы создать настраиваемое действие, которое вызывает библиотеку динамической компоновки (DLL) C/C++ ( тип настраиваемого действия 1) как при MSIRUNMODE_SCHEDULED, так и MSIRUNMODE_ROLLBACK, поместите две записи в таблицу CustomAction, которые вызывают одну и ту же библиотеку DLL, но имеют разные числовые типы. Включите код, который вызывает MsiGetMode , чтобы определить, когда следует выполнять пользовательское действие.

Справочник по настраиваемым действиям

Сведения о пользовательских действиях

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