我有以下财产:
<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" />
<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未运行的原因.
原文地址:https://www.jb51.cc/windows/363460.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。