1

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

2 回答 2

1

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

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

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

于 2018-11-01T12:04:12.497 回答
0

我对 WIX GUI 修改几乎没有经验,但是您需要了解的有关 MSI 属性的一个概念是您可以使用 Property={}“取消定义”它们。

一旦使用任何值定义,属性将无法通过逻辑测试,例如 NOT UPGRADINGPRODUCTCODE,因为检查的属性具有值。NOT UPGRADINGPRODUCTCODE 等于“此属性未定义,不存在”。要取消选中 GUI 中的复选框,您需要这个未定义的状态 - 我知道对于认为检查状态是由于诸如 0 表示未选中和 1 表示已选中的值的开发人员来说,这是非常违反直觉的。有人告诉我,VB6 开发人员可能更熟悉“未定义的概念”。

有关 MSI GUI 的讨论,请参阅此线程:如何从 msiexec 命令行将复选框设置为“未选中”?

于 2014-04-12T10:57:08.080 回答