删除Wix Bundle上的Patched产品卸载

时间:2016-04-19 14:33:03

标签: wix bundle patch uninstall

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

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

在卸载软件包时,应用程序已完全正确卸载,但仅删除了修补程序,完全安装了以前版本的资源(从1.5.0.0降级到1.4.0.0)。

是否有方法通过捆绑包强制完全卸载完整产品,而不仅仅是.msp补丁?

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

1 个答案:

答案 0 :(得分:1)

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

我只是测试了一个非常简单的捆绑包,里面有一个MSI。我所做的是让主引导程序安装程序嵌入了msi并安装它。第二个包具有更高的版本和完全相同的msi引用但我设置了压缩="没有"在< MsiPackage>中标签。当我卸载升级的捆绑包时,它也删除了原始的MSI。

所以我认为你可以让你的软件包正确地删除原始资源"资源"在升级并添加一个小的msp后安装。您只需要添加< MsiPackage>到msp之前的bundle chain并设置compressed =" no"

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

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

我不完全确定这会起作用,但这是值得尝试的。另一件好事是它对升级安装程序的大小几乎没有任何影响。