wix – 如何在msiexec命令行中设置“取消选中”复选框?
我有一个msi(用WIX编写),它有一个绑定到自定义属性的复选框(称之为MY_PROPERTY).我想从命令行运行这个msi,为此属性指定0(未选中)或1(已选中).我的脚本将确定适当的值(基于环境)并将该值注入msiexec命令行.我的命令行看起来像这样:
msiexec /i my_installer.msi MY_PROPERTY=$value 其中$value为1或0,具体取决于环境.问题是无论我在命令行为MY_PROPERTY提供什么值,都会选中复选框(并且该属性将始终设置为1).取消选中复选框的唯一方法是不指定属性(保持未定义).应该注意,无论UI是否显示,都会出现这种情况(在上面的命令行中添加“/ quiet”不会改变这种行为). This msdn post似乎表明这是Windows安装程序中已知的“错误”(或者更确切地说,无论创作系统编写的是msi).建议将构建后的msi hack作为解决方案.我想知道是否有人遇到过这个问题并提出了更好的解决方法/解决方案.谢谢! 更新 我看到这个问题的三个解决方案: >从@Damien开始,让包装脚本在其值为0时不将属性传递给msiexec.这会使脚本更复杂,并且可能会阻止我覆盖默认为“已检查”的复选框的值. 我目前倾向于选项3,虽然选项1可能是我原始问题的最佳答案.有什么想法吗?
这就是“假设”工作的方式 – 基本上,在用户选中复选框之前该属性不存在,然后它被“设置”(存在).因此,如果要在选中复选框时执行自定义操作,则测试是否存在属性作为运行自定义操作的条件,而不是检查自定义prop设置为的值.
我认为从命令行处理此问题的最佳方法是您已经提到的:如果您希望选中该复选框,请在命令行中指定自定义prop,否则,请不要选中该复选框. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 在Windows上配置Git以使用NTLM代理身份验证
- windows – 在Git中显示的幻影本地更改
- ms-access – 在多用户环境中编程Microsoft Acce
- windows-server-2012 – WSUS无法下载任何东西,不
- windows-server-2008-r2 – 通过Powershell和Win
- windows-server-2008 – 内部AD域与互联网域
- 使用Windows等设备名称作为Java类名称
- windows-phone-7 – CameraCaptureTask仅返回WP7
- active-directory – 部署XP计算机无法使用Prest
- 使用NetTcpBinding在WCF中进行Windows身份验证/加