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