2009-11-28 77 views
6

我有一系列相互依赖的SetProperty操作。这里是一个简化的例子:订购执行WiX SetProperty操作

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

属性A需要在属性B之前设置在这种情况下,以便B的值变成“Hello world!”。

由于WiX没有定义设置自定义操作名称在这种情况下的属性,我没有在使用之前之后属性的名称。

I did注意到这些动作的执行顺序与属性名称的字母顺序相匹配,但感觉就像我不应该依赖的实现细节。

我该如何干净地执行SetProperty自定义操作的顺序?

回答

9

您还可以使用SetProperty元素的“Action”属性来确定自定义操作的名称。如果您希望在两个不同的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!" /> 
+0

奇怪,在我的问题(发表在2009年),我说,有没有这样的属性来设置的名称。或者我错过了它,或者从那时起,它可能被添加到其中一个wix 3发行版中。感谢更新! – 2012-07-10 09:04:28

4

我使用orca来发现为自定义操作生成的名称。他们原来是SetASetB。以下是我想要的:

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