使用条件元素禁用 WIX 中的复选框
Posted
技术标签:
【中文标题】使用条件元素禁用 WIX 中的复选框【英文标题】:Disable Checkbox in WIX with condition element 【发布时间】:2014-04-12 05:28:15 【问题描述】:我正在尝试根据项目配置禁用 Wix 复选框。到目前为止,它没有奏效。有人知道如何让它工作吗?
<Control
Id="cbxXXX"
Type="CheckBox"
Property="XXX"
X="20"
Y="100"
Width="290"
Height="12"
Text="xxxx"
CheckBoxValue="True"
>
<Condition Action="disable>$(var.Project.Configuration) = "DEBUG</Condition>
</Control>
【问题讨论】:
【参考方案1】:意识到这是一篇旧帖子,但这很可能是因为对话框是在运行时创建的,而您正在尝试访问编译时变量,即预处理器变量。
要解决此问题,请设置一个新属性,例如CONFIGURATION
到 $(var.Project.Configuration)
像以前一样访问该属性:<Condition Action="disable">CONFIGURATION = "DEBUG" </Condition>
【讨论】:
【参考方案2】:我对 WIX GUI 修改几乎没有经验,但您需要了解的关于 MSI 属性的一个概念是您可以使用 Property=“取消定义”它们。
一旦定义了任何值,属性将无法通过逻辑测试,例如 NOT UPGRADINGPRODUCTCODE,因为检查的属性具有值。 NOT UPGRADINGPRODUCTCODE 等于“此属性未定义,不存在”。要取消选中 GUI 中的复选框,您需要这个未定义的状态 - 我知道对于认为检查状态是由于诸如 0 表示未选中和 1 表示已选中的值的开发人员来说,这是非常违反直觉的。我听说 VB6 开发人员可能更熟悉“未定义的概念”。
有关 MSI GUI 的讨论,请参阅此线程:How to set a check box to "unchecked" from the msiexec command line?
【讨论】:
以上是关于使用条件元素禁用 WIX 中的复选框的主要内容,如果未能解决你的问题,请参考以下文章