首页 > 解决方案 > Wix 安装程序删除要更新但不安装新版本的文件

问题描述

最近遇到了一个配置为对以前安装的应用程序进行“重大升级”的 Wix 安装程序的问题。已安装在系统上的应用程序包含一个版本为 1.0.0 的 S7.Net.dll 文件,而安装程序(表示更新)包含一个同名的 dll (S7.Net.dll),但版本为0.3.0 安装在同一位置。但是,运行“升级”安装程序似乎会删除版本为 1.0.0 的文件,但从未将其替换为版本为 0.3.0 的文件。

我查看了安装程序(链接)使用的文件版本控制逻辑,如果我理解正确,安装程序不应该用“升级”安装程序中的文件替换系统上已经安装的文件(v1.0.0) (v0.3.0)。这种理解正确吗?我不确定这一点,因为“升级”安装程序确实包含一个MajorUpgrade组件,据我了解,默认情况下该组件会执行一种“全部删除”操作 - 至少这是我从阅读中的RemoveFeatures属性描述时所解释的维克斯文档。但是,如果执行“全部删除”,那么为什么还要比较两个文件的版本呢?

总的来说,我对文件版本控制逻辑的理解是否正确?我对Wix组件RemoveFeatures属性的理解如何?MajorUpgrade如果是这样,为什么“升级”安装程序会删除文件的现有版本而不替换它?

我已经包含MajorUpgrade了安装程序中包含的组件,以及提到的每个 dll 文件的属性选项卡的屏幕截图。

<MajorUpgrade AllowDowngrades="no" DowngradeErrorMessage="A newer version of [ProductName] is already installed."/>

现有文件 v1.0.0.0 的属性

更新文件 v0.3.0 的属性

标签: wixwindows-installerfileversioninfo

解决方案


推荐阅读