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