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


Виртуализация настраиваемых действий

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

Планирование настраиваемого действия в таблице последовательностей

  1. Введите имя настраиваемого действия (которое является первичным ключом таблицы CustomAction) в столбец Действие таблицы Последовательности .
  2. Введите последовательность настраиваемого действия относительно других действий в таблице в столбец Последовательности таблицы Последовательности . Дополнительные сведения о таблицах последовательностей см. в разделе Использование таблицы последовательностей.
  3. Чтобы условно пропустить действие, введите условное выражение в столбец Условие таблицы Последовательности . Установщик пропускает это действие, если выражение принимает значение FALSE.

Как и в случае со стандартными действиями, пользовательские действия, запланированные в InstallUISequence или AdminUISequence , выполняются только в том случае, если для внутреннего пользовательского интерфейса задан полный уровень. Уровень пользовательского интерфейса задается с помощью функции MsiSetInternalUI .

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

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

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

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

Пользовательские действия, ссылающиеся на установленный файл в качестве источника, такие как тип настраиваемого действия 17 (DLL), тип настраиваемого действия 18 (EXE), тип настраиваемого действия 21 (JScript) и тип настраиваемого действия 22 (VBScript), должны соответствовать следующим ограничениям последовательности.

  • Настраиваемое действие должно быть виралировано после действия CostFinalize , чтобы можно было разрешить путь к файлу, на который указывает ссылка.
  • Если исходный файл еще не установлен на компьютере, отложенные пользовательские действия (в скрипте) должны быть последовательно настроены после installFiles.
  • Если исходный файл еще не установлен на компьютере, неразрешенные пользовательские действия должны быть виртуалированы после действия InstallInitialize .

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

  • Если настраиваемое действие изменяет пакет, например путем добавления строк в таблицу, действие должно быть упорядочено перед действием InstallInitialize .
  • Если настраиваемое действие вносит изменения, которые повлияют на затраты, оно должно быть упорядочено перед действием CostInitialize .
  • Если настраиваемое действие изменяет состояние установки компонентов или компонентов, оно должно быть виртуаловировано перед действием InstallValidate .