Properties wix:根据特定条件设置多个值

Properties wix:根据特定条件设置多个值,properties,wix,installation,action,Properties,Wix,Installation,Action,我有不同的安装模式。根据参数,我会执行以下操作: <Property Id="PROP1" Value="Value1" /> <SetProperty Id="PROP1" Before="CostFinalize" Sequence="execute" Value="Value2"></SetProperty> 有没有一种方法可以使用某种switch语句,或者如何处理多个条件语句 另一个问题是,我根据值设置了多个变量(现在大约为10个),用完全相同的代码

我有不同的安装模式。根据参数,我会执行以下操作:

<Property Id="PROP1" Value="Value1" />
<SetProperty Id="PROP1" Before="CostFinalize" Sequence="execute" Value="Value2"></SetProperty>
有没有一种方法可以使用某种switch语句,或者如何处理多个条件语句

另一个问题是,我根据值设置了多个变量(现在大约为10个),用完全相同的代码列出它们非常麻烦

  <SetProperty Id="PROP2" Before="CostFinalize" Sequence="execute" Value="Value2"></SetProperty>
  <SetProperty Id="PROP3" Before="CostFinalize" Sequence="execute" Value="Value3"></SetProperty>

有没有办法让它像:

<Condition val="...">
 <setProperty.../>
 <setProperty.../>
 <setProperty.../>
</Condition>


谢谢

首先,尝试重新思考安装程序的体系结构。是否真的需要基于相同的条件设置所有这些属性?或者更好的方法是“条件化”——以更简单的方式将适当的特性和组件化

让我们回到你问题的技术方面。
SetProperty
元素只是一个快捷方式,它是定义自定义操作的“一体式”解决方案,用于设置属性并对其进行适当调度。确实,不能使用它将同一属性设置为不同的值,因为
SetProperty
元素本身没有ID属性

相反,请使用良好的旧样式定义自定义操作并手动安排它:

<CustomAction Id="SetProp11" Property="PROP1" Value="Value1" />
<CustomAction Id="SetProp12" Property="PROP1" Value="Value2" />
...
<InstallExecuteSequence>
  <Custom Action="SetProp11" After="...">your condition here</Custom>
  <Custom Action="SetProp12" After="...">your condition here</Custom>
  ...
</InstallExecuteSequence>

...
你在这里的情况
你在这里的情况
...
这无疑会增加额外的键入工作,并降低代码的可读性,但通过这种方式,您可以解决问题。然而,让我再次强调——您必须发明变通方法这一事实意味着代码开始有味道,重新思考可能是有意义的

我不知道如何在一堆中设置一些属性,比如switch语句。或者,从技术上讲,您可以创建一个例如C#自定义操作,并让它一次完成所有属性的工作

希望这有帮助

<CustomAction Id="SetProp11" Property="PROP1" Value="Value1" />
<CustomAction Id="SetProp12" Property="PROP1" Value="Value2" />
...
<InstallExecuteSequence>
  <Custom Action="SetProp11" After="...">your condition here</Custom>
  <Custom Action="SetProp12" After="...">your condition here</Custom>
  ...
</InstallExecuteSequence>