首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >wix:根据特定条件设置多个值

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

Stack Overflow用户
提问于 2013-11-05 05:29:17
回答 1查看 1.3K关注 0票数 0

我有不同的安装模式。根据参数的不同,我会这样做:

代码语言:javascript
运行
复制
<Property Id="PROP1" Value="Value1" />
<SetProperty Id="PROP1" Before="CostFinalize" Sequence="execute" Value="Value2"></SetProperty>

问题是我有两个以上的选项,当我添加它们时,我得到了它们。

代码语言:javascript
运行
复制
Duplicate symbol 'CustomAction:SetPROP1' found.

有没有办法使用某种switch语句,或者如何处理多个条件语句?

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

代码语言:javascript
运行
复制
  <SetProperty Id="PROP2" Before="CostFinalize" Sequence="execute" Value="Value2"></SetProperty>
  <SetProperty Id="PROP3" Before="CostFinalize" Sequence="execute" Value="Value3"></SetProperty>

有没有办法让它像这样:

代码语言:javascript
运行
复制
<Condition val="...">
 <setProperty.../>
 <setProperty.../>
 <setProperty.../>
</Condition>

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2013-11-05 15:42:33

首先,试着重新思考安装程序的架构。真的有必要基于相同的条件来设置所有这些属性吗?或者,也许以一种更简单的方式“条件”-ize适当的特性和组件更好?

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

取而代之的是,使用定义自定义操作并手动安排它的传统风格:

代码语言:javascript
运行
复制
<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#自定义操作,并让它一次完成所有属性的工作。

希望这能有所帮助。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19777498

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档