【问题标题】:Remove Patched Product on Wix Bundle Uninstall在 Wix Bundle Uninstall 上删除已修补的产品
【发布时间】:2016-08-11 19:32:21
【问题描述】:

我有一个安装两个产品的包:应用程序和更大的资源安装。

对于升级,应用程序 msi 将应用标准升级,但资源安装会被打补丁。 (不幸的是,这个过程是不久前开始的,所以补丁链仍然是使用 Wix 3.0 构建的)。

在卸载捆绑包时,应用程序被完全正确地卸载,但只删除了补丁,保留了任何先前版本资源的完整安装(从 1.5.0.0 降级到 1.4.0.0)。

有没有一种方法可以通过捆绑包强制完全卸载整个产品,而不仅仅是 .msp 补丁?

编辑:只需添加,在程序和功能中公开资源安装并在那里运行卸载将按预期正确删除整个产品。

【问题讨论】:

  • 您是否使用安装程序的升级版本从版本 X 升级到仅包含用于资源安装的 msp 的 Y?听起来您的升级包不知道以前的补丁/原始 msi 并且实际上按预期工作并且只是卸载 msp。
  • @BrianSutherland 是的,你是对的,这是预期的行为。我只是希望有一种方法可以让捆绑包强制卸载完整的产品而不仅仅是补丁,即使它只附带补丁。

标签: wix bundle patch uninstallation


【解决方案1】:

我认为这可能是您的解决方案。

我刚刚测试了自己一个非常简单的捆绑包,其中包含一个 MSI。我所做的是让主引导程序安装程序将 msi 嵌入其中并进行安装。第二个包具有更高版本和完全相同的 msi 引用,但我在 标记中设置了压缩 =“no”。当我卸载升级后的捆绑包时,它也删除了原来的 MSI。

因此,我认为您可以在升级并添加一个小 msp 后让您的捆绑包正确删除原始“资源”安装。您只需在 msp 之前将 添加回包链并设置压缩 =“no”

<MsiPackage SourceFile="$(var.ResourcesInstaller.TargetPath)" Compressed="no"/>

这里唯一需要注意的是,SourceFile 应该与您第一次安装中包含的 msi 完全相同。当您安装升级时,刻录引擎应该检测到此 msi 已安装,因此无需执行任何操作。卸载时,它会检测到已安装的 msi,并应该将其卸载。

我不完全确定这会奏效,但值得尝试。另一个好处是它对升级安装程序的大小几乎没有影响。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-05-08
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多