我正试图根据项目配置禁用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>
意识到这是一篇旧文章,但这很可能是因为对话框是在运行时创建的,并且您正试图访问编译时变量,即预处理器变量。
要解决此问题,请设置一个新属性,例如CONFIGURATION
至$(var.Project.Configuration)
像以前一样访问属性:<Condition Action="disable">CONFIGURATION = "DEBUG" </Condition>
我对WIX GUI修改没有什么经验,但关于MSI属性,你需要了解的一个概念是,你可以使用Property={}"取消定义"它们。
一旦使用任何值定义了属性,则该属性将无法通过逻辑测试(如NOT UPGRADINGPRODUCTCODE),因为检查的属性具有值。NOT UPGRADINGPRODUCTCODE等于"此属性未定义,它不存在"。要取消选中GUI中的复选框,您需要的就是这种未定义的状态——我知道,对于那些认为复选状态是由0表示未选中和1表示已选中等值引起的开发人员来说,这是非常违反直觉的。我被告知VB6开发人员可能更熟悉"未定义的概念"。
关于MSI GUI的一个讨论:如何将复选框设置为";未检查";从msiexec命令行?