加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Wix布尔属性值不起作用

发布时间:2020-12-14 01:42:00 所属栏目:Windows 来源:网络整理
导读:我有以下财产: Property Id="UPDATEDB"1/Property UI中的一个复选框绑定到该属性: Control Id="updateDatabase" Type="CheckBox" CheckBoxValue="1" Height="15" Width="95" X="20" Y="74" Text="Update Database" Property="UPDATEDB" / 以及根据此属性的
我有以下财产:
<Property Id="UPDATEDB">1</Property>

UI中的一个复选框绑定到该属性:

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

以及根据此属性的值执行某项操作的自定义操作

<CustomAction Id="RunDbMigration" Directory="INSTALLDIR" Return="check"
          ExeCommand='[DBMIGRATIONDIR]DbMigration.exe' />

<InstallExecuteSequence>
  <Custom Action="RunDbMigration" After="InstallFinalize">UPDATEDB=1 AND NOT Installed</Custom>
</InstallExecuteSequence>

如果我尝试从命令行为UPDATEDB传递值0:

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

要么

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

无论如何都要检查复选框的值.也就是说,传入的0似乎得到了尊重,RunDbMigration动作没有运行……

这里发生了什么?为什么这样的火箭科学?

正如其他人所提到的,Checkbox在1/0意义上不是布尔值,它们在null / not-null意义上是布尔值.

要从命令行取消设置 – 您可能希望使用类似的东西

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

在执行自定义操作之前,您的条件可能是专门针对值1,这就是您的CA未运行的原因.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读