gpt4 book ai didi

wix - 如何从 msiexec 命令行将复选框设置为 "unchecked"?

转载 作者:行者123 更新时间:2023-12-04 10:31:47 25 4
gpt4 key购买 nike

我有一个 msi(使用 WIX 编写),它有一个绑定(bind)到自定义属性(称为 MY_PROPERTY)的复选框。我想从命令行运行这个 msi,为此属性指定 0(未选中)或 1(选中)。我的脚本将确定适当的值(基于环境)并将该值注入(inject) 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。这使脚本更加复杂,并且可能会阻止我能够覆盖默认为“选中”的复选框的值。
  • 从@Michael Urman,添加一个自定义操作,如果属性值为零,则清除该属性。这使得 msi 更加复杂,我必须为 UI 中的每个复选框添加这样的自定义操作。
  • 另一个想法是简单地禁止在我们的 msi 安装程序中使用复选框,并使用单选框或下拉菜单来代替“真/假”问题。虽然这限制了我们安装程序的 UI 选项,但它允许包装脚本保持简单,并且不需要自定义操作来“破解”属性。

  • 我目前倾向于选项 3,尽管选项 1 可能是我最初问题的最佳答案。有什么想法吗?

    最佳答案

    正如您所发现的,当属性已定义(非空白)时复选框为真(选中),当属性未定义(空白)时复选框为假(未选中)。听起来您需要将环境 1 或 0 字符串转换为复选框 true/false,其中 1 或 0 在命令行中传入。尝试使用 set-property 自定义操作将您的属性设置为 {} (空白)条件是属性已经是 "0" .在安装 UI 和安装执行序列中尽早安排它。

    后期更新:关于需要多个自定义操作来处理多个复选框的问题,您可以选择。您可以创建多个 set-property 操作(好处:容易知道他们在做什么;成本:其中很多),或者您可以创建一个基于代码的自定义操作,它遍历 Checkbox table要从 0 转换的属性列表空白(好处:一个 Action ;成本:记录不充分,自定义代码)。后一种方法的第二个优点是您可以处理不寻常的Value。设置,这样的复选框应该将属性设置为 0检查时。

    关于wix - 如何从 msiexec 命令行将复选框设置为 "unchecked"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2992006/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com