使用条件元素禁用WIX中的Checkbox

时间:2014-04-12 05:28:15

标签: wix wix3.5 wix3.6 wix3.7 wix-extension

我正在尝试根据项目配置禁用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>

2 个答案:

答案 0 :(得分:1)

意识到这是一个古老的帖子,但这很可能是因为该对话框是在运行时创建的,并且您正在尝试访问编译时变量,即预处理器变量。

要解决此问题,请设置一个新属性,例如
CONFIGURATION$(var.Project.Configuration)

像以前一样访问属性:
<Condition Action="disable">CONFIGURATION = "DEBUG" </Condition>

答案 1 :(得分:0)

我对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?