使用条件元素禁用 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)

像以前一样访问该属性:&lt;Condition Action="disable"&gt;CONFIGURATION = "DEBUG" &lt;/Condition&gt;

【讨论】:

【参考方案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 中的复选框的主要内容,如果未能解决你的问题,请参考以下文章

使用wix安装程序中的复选框,根据用户选择安装的功能

jQuery - 如果值与数组中的元素匹配,则禁用复选框

WiX:有条件地注册应用程序以在 Windows 启动时启动

如何根据角度 6 中的条件禁用复选框?

禁用带有复选框的网格面板

将功能与WiX中的复选框关联