【问题标题】:Prevent Windows installer (MSI) downgrade with WiX and UpgradeCode使用 WiX 和 UpgradeCode 防止 Windows 安装程序 (MSI) 降级
【发布时间】:2014-11-20 21:48:42
【问题描述】:

我发布了一个使用 WiX 3.5 构建的 Windows 安装程序 (V1)。 V1 有一个 UpgradeCode,但没有 Upgrade 或 MajorUpgrade 元素。 V2 尚未发布。

我可以将 MajorUpgrade 元素添加到 V2 和 V3 安装程序,并且可以检测和防止从 V3 降级到 V2。我知道在安装V2的过程中我也可以检测到V1。

问题:
目前我可以在同一个目录中安装 V1 over V2,并且两个版本都出现在 Add / Remove Programs 中。 V1 文件覆盖 V2 文件。卸载 V1 不会从“添加/删除程序”中删除 V2,但会删除 V2 文件,因为它们与 V1 具有相同的路径名。用户留下了无法使用的 V2 安装。

是否可以在我安装 V2 后阻止 V1 安装?
OR
V1 能否正确卸载 V2?

  • V2 成功自动卸载 V1
  • V2 升级安装后仅存在一个 ARP 条目,带有 V2 的版本号
  • V1 和 V2 具有相同的 UpgradeCode
  • V2 在前三个字段中的版本号大于 V1
  • V1 和 V2 具有匹配的 InstallScope

【问题讨论】:

    标签: wix windows-installer


    【解决方案1】:

    防止降级需要升级检测逻辑起作用,看起来这不是因为您获得了两个 ARP 条目。 V1 和 V2 需要相同的 UpgradeCode,V2 必须在前三个字段中具有大于 V1 的版本,并且 InstallScope 必须匹配。如果 V2 是每个用户(或每台机器)的安装程序,那么 V1 也将安装而不是升级,如果它不是相同的范围。

    【讨论】:

    • 我相信我已经满足了您列出的所有要求,并将它们添加到问题中。
    • 如果不明显,通过在安装命令行中添加 /L*vx 来使用日志进行升级。搜索 FindRelatedProducts 操作以查看是否找到任何内容。另请注意,某些设置会将按机器安装变成按用户安装,因此这可能是个问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-30
    • 1970-01-01
    • 1970-01-01
    • 2014-12-29
    • 2015-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多