Порядок выполнения действий WiX SetProperty - PullRequest
7 голосов
/ 28 ноября 2009

У меня есть последовательность SetProperty действий, которые зависят друг от друга. Вот упрощенный пример:

<SetProperty Id="A" Before="AppSearch" Value="Hello" />
<SetProperty Id="B" Before="AppSearch" Value="[A] world!" />

В этом случае необходимо установить свойство A перед свойством B, чтобы значение B стало «Hello world!».

Поскольку WiX не определяет атрибут для установки имени настраиваемого действия в этом случае, у меня нет имени для использования в До или После атрибуты.

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

Как правильно установить порядок SetProperty пользовательских действий?

Ответы [ 2 ]

10 голосов
/ 10 июля 2012

Вы также можете использовать атрибут «Действие» элемента SetProperty, чтобы записать имя настраиваемого действия. Это становится необходимым, если вы хотите установить одно и то же свойство в двух разных действиях SetProperty, поскольку оно удаляет неоднозначные имена действий «SetXXX».

Например:

<SetProperty Id="A" Action="MyFirstAction" Before="AppSearch" Value="Hello" />
<SetProperty Id="B" Action="MySecondAction" After="MyFirstAction" Value="[A] world!" />
<SetProperty Id="A" Action="MyThirdAction" After ="MySecondAction" Value="Goodbye cruel world!" />
4 голосов
/ 29 ноября 2009

Я использовал orca , чтобы обнаружить имена, сгенерированные для пользовательских действий. Они оказываются SetA и SetB. Следующее делает то, что я хочу:

 <SetProperty Id="A" Before="AppSearch" Value="Hello" />
 <SetProperty Id="B" After="SetA" Value="[A] world!" />
...