【问题标题】:WiX Upgrade without uninstallation of existing version无需卸载现有版本即可升级 WiX
【发布时间】:2017-11-15 12:37:44
【问题描述】:

WiX 中的 MajorUpgrade 元素似乎正在卸载现有版本。但我有一个要求,我必须从 1.0.0 升级到 2.0.0,而无需卸载 1.0.0。但这并不意味着它会在添加/删除程序中同时显示 1.0.0 和 2.0.0。我的1.0.0版本有一个文件,一个注册表项,一个自定义windows服务等等。我的 2.0.0 本质上会修改现有文件并添加一个新文件。在我们的例子中,可以只进行这样的更改并且仍然增加主要版本。但是为此,我不想卸载并重新安装服务等。但如果是全新安装,则必须安装所有组件。例如,如果客户安装了 7.9.0 版本并想要升级到 8.0.0(这在技术上可能是重大升级,因为主要版本已更新或次要升级,因为可能只有从 7.9.0 到 8.0 的增量更改.0?),完全卸载 7.9.0 可能会导致数据丢失等问题。有没有办法做到这一点?如果是这样,任何人都可以提供一些步骤/示例或提供一些显示此内容的链接吗?注意:我不是在谈论补丁。我能够使补丁正常工作。但我也对小升级和小升级感到困惑。

FireGiant's Tutorial 谈论使用 元素,而还有许多其他文章谈论使用 元素。

【问题讨论】:

  • 听起来您想在 InstallFinalize 之后安排 RemoveExistingProducts 操作。这样,您的 2.0 MSI 将安装在 1.0 安装的“顶部”,然后在最后尝试卸载/取消引用 1.0 安装。

标签: wix windows-installer upgrade


【解决方案1】:

jbudreau 是正确的。有两种不同类型的重大升级。早期主要升级会在安装新版本之前卸载现有版本。这是您在帖子中解释的行为。

查看执行序列表并将RemoveExistingProducts 操作移动到InstallFinalize 之后,这将成为后期升级,它使用组件规则覆盖现有文件,然后删除任何应该删除的文件。

【讨论】:

  • 我的 MajorUpgrade 元素带有 Schedule="afterInstallFinalize",但仍然没有运气。
猜你喜欢
  • 2014-01-31
  • 1970-01-01
  • 1970-01-01
  • 2013-01-09
  • 2023-03-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-04-29
相关资源
最近更新 更多