wix - Windows安装程序会在产品升级期间删除版本化文件,而不是降级文件

标签 wix windows-installer

我们使用wix创建我们的设置。对于升级,我们使用this answer by Rob Mensching中演示的主要升级。 (在较新的wix版本中,您可以使用MajorUpgrade元素。)这通常可以正常工作。删除旧产品,然后安装新产品。

但是,显然以上内容并不完全等同于手动卸载旧产品,然后手动安装新产品。

例如,考虑以下情形:

发行了我们产品的

  • 1.0版,其中包含第三方dll
  • 的5.0版
    发行了我们产品的
  • 1.1版,其中包含同一第三方dll
  • 的5.1版
    发行了我们产品的
  • 1.2版,再次将其降级到第三方dll 5.0版,因为我们发现新版本引入的问题多于解决的问题。

  • 从上面的wix升级逻辑显然可以看出,从1.1版升级到1.2版时,rdt_strong的3rdparty dll将消失。必须进行修理才能恢复它。

    还有另一种升级方法,这种方法适用于这种情况吗?我猜我在寻找的是升级逻辑,该逻辑允许行为降级,就像行为是手动卸载旧产品然后手动安装新产品一样。

    最佳答案

    我们还遇到了以下问题,即在主要升级中未重新安装版本较低的DLL。我认为奇怪的是,安装程序会根据现有文件的版本决定要安装哪些文件,然后完全卸载所有内容,但仍然只安装确定要安装哪些文件,然后再卸载旧产品。看来这可能是Windows Installer中的错误...

    要解决此问题,我们将RemoveExistingProducts操作移至CostFinalize操作上方。

    我知道documentation on MSDN建议将RemoveExistingProducts放在InstallValidate之后,但我不确定将它放在InstallValidate操作之前是否会对次要升级产生任何负面影响,但我们决定仅对我们的产品执行主要升级,因此该解决方案似乎为我们工作。

    关于wix - Windows安装程序会在产品升级期间删除版本化文件,而不是降级文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4227456/

    相关文章:

    installation - 编辑预先存在的 cab 文件/安装程序文件

    visual-studio-2008 - 为Windows服务创建MSI安装程序

    wix:针对每个用户安装程序的 ICE57 和 ICE91 警告

    wix - 升级期间手动迁移功能状态

    wix - 将 Bootstrap 与 MSI ui 一起使用

    visual-studio-2012 - 当我在 Visual Studio 中构建解决方案时,Wix 项目无法编译

    .net - msbuild : what are my options? 不支持部署项目

    windows - 无法使用 WiX 启动 Windows 服务

    c# - 创建asp.net web api core 2.0项目的msi

    wix - 如何从 MSI 检查已安装的产品版本