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


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

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

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

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

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

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

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

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

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

msidbCustomActionTypeFirstSequence

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

Десятичная: 256

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

msidbCustomActionTypeOncePerProcess

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

Десятичная: 512

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

msidbCustomActionTypeClientRepeat

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

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

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

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

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

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

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