Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wix布尔属性值不';行不通_Wix_Windows Installer_Wix3.5 - Fatal编程技术网

Wix布尔属性值不';行不通

Wix布尔属性值不';行不通,wix,windows-installer,wix3.5,Wix,Windows Installer,Wix3.5,我拥有以下财产: <Property Id="UPDATEDB">1</Property> <Control Id="updateDatabase" Type="CheckBox" CheckBoxValue="1" Height="15" Width="95" X="20" Y="74" Text="Update Database" Property="UPDATEDB" /> 或 复选框的值仍处于选中状态。也就是说,传入的0似乎得到了尊重,而RunDb

我拥有以下财产:

<Property Id="UPDATEDB">1</Property>
<Control Id="updateDatabase" Type="CheckBox" CheckBoxValue="1" Height="15" Width="95" X="20" Y="74" Text="Update Database" Property="UPDATEDB" />

复选框的值仍处于选中状态。也就是说,传入的0似乎得到了尊重,而RunDbMigration操作未运行


这是怎么回事?为什么这是火箭科学?

问题在于复选框value=“1”。您可以在此处找到问题的解决方案:

安装程序属性要么设置为值,要么未设置。在内部,该值只是一个字符串,因此“0”、“1”、“true”和“false”是相同的

当复选框控件的属性设置为值(不管是什么值)时,复选框控件处于选中状态;当其属性为空时,复选框控件处于未选中状态

此命令行设置属性并选中复选框:

msiexec /i "Setup.msi" /l* UPDATEDB="0"
此命令行未设置属性,因此未选中复选框:

msiexec /i "Setup.msi" /l*

正如其他人提到的,复选框不是1/0意义上的布尔值,而是null/notnull意义上的布尔值

要从命令行取消设置,您需要使用

msiexec /i "Setup.msi" /l* UPDATEDB=""

很可能您的条件是在执行自定义操作之前专门查找值1,这就是为什么您的CA没有运行。

/但是UPDATEDB的默认值是1…因此,如果我没有在命令行中传递它,则默认情况下会选中该复选框。…答对了。谢谢传入UPDATEDB=”“就成功了。我理解为什么我的自定义操作没有运行,但不理解为什么复选框仍然被选中。现在我明白了,任何不是“检查”的东西都意味着检查。
msiexec /i "Setup.msi" /l* UPDATEDB="0"
msiexec /i "Setup.msi" /l*
msiexec /i "Setup.msi" /l* UPDATEDB=""