Пользовательское действие между компонентами - PullRequest
0 голосов
/ 04 сентября 2018

Как обеспечить запуск настраиваемого действия между установкой двух компонентов?

Например, у меня есть некоторые определения Wix, как показано ниже:

<Feature Id="ProductFeature" Title="My Installer" Level="1">
  <ComponentGroupRef Id="DatabaseSetup" />
  <ComponentGroupRef Id="DatabaseCleanup" />
</Feature>

<InstallExecuteSequence>
  <Custom Action="RunDatabaseMigration" Before="InstallFinalize"></Custom>
</InstallExecuteSequence>

Есть ли способ убедиться, что настраиваемое действие RunDatabaseMigration выполняется в диапазоне от DatabaseSetup до DatabaseCleanup?

Я ожидаю что-то подобное, но, очевидно, я могу использовать только имя стандартного или настраиваемого действия для атрибута До и После, это решение не применяется к компоненту.

<Custom Action="RunDatabaseMigration" After="DatabaseSetup"></Custom>

1 Ответ

0 голосов
/ 04 сентября 2018

Как убедиться, что настраиваемое действие запускается между установками из двух компонентов?

Как правило, невозможно запланировать настраиваемое действие между двумя компонентами. Как вы уже узнали сами, атрибуты Before и After должны называть стандартное или настраиваемое действие.

Установщик Windows не устанавливает один компонент за другим. Компоненты - это просто логические группы элементов установки, т.е. г. ключи реестра, файлы и так далее, но они не определяют порядок установки. Вместо этого установщик Windows группирует различные виды ресурсов, такие как ключи реестра и файлы, и устанавливает эти группы в порядке, определенном таблицей InstallExecuteSequence. Например, в один момент все файлы будут установлены (действие InstallFiles), а позже будут записаны все ключи реестра (WriteRegistryValues). Взгляните на предложенный InstallExecuteSequence, чтобы получить лучшую идею.

При этом, если DatabaseSetup устанавливает только один тип ресурса (скажем, файлы), а DatabaseCleanup устанавливает другой тип (скажем, ключи реестра), вы можете запланировать настраиваемое действие между двумя связанными стандартными действиями (в этом кейс InstallFiles и WriteRegistryValues). Но если оба компонента устанавливают один и тот же тип ресурса или смешанные ресурсы, вы не можете использовать этот обходной путь. В этом случае вам придется преобразовать один из компонентов в настраиваемое действие, которое можно запланировать в любой момент.

...