最近将Wix安装程序配置为先前安装的应用程序的“主要升级”时遇到了问题。系统上已经安装的应用程序包括一个版本为1.0.0的S7.Net.dll文件,而用于表示更新的安装程序包括一个同名的dll(S7.Net.dll),但版本为0.3.0将被安装在同一位置。但是,运行“升级”安装程序似乎删除了版本1.0.0的文件,但从未将其替换为版本0.3.0的文件。
我已经研究了安装程序(link)所使用的文件版本控制逻辑,如果我对它的理解正确,则安装程序不应该将系统上已安装的文件(v1.0.0)替换为一个来自“升级”安装程序(v0.3.0)。这种理解正确吗?鉴于“升级”安装程序确实包含MajorUpgrade
组件这一事实,对此我不确定,根据我的理解,默认情况下该组件会执行某种“全部删除”操作-至少这是我通过阅读Wix documentation中RemoveFeatures
属性的说明。但是,如果执行“全部删除”,那么为什么仍要比较这两个文件的版本?
总体而言,我对文件版本控制逻辑的理解正确吗?我对RemoveFeatures
Wix组件的MajorUpgrade
属性的理解如何?如果是这样,为什么“升级”安装程序会删除文件的现有版本而不替换它?
我已经包括了安装程序中包含的MajorUpgrade
组件,以及提到的每个dll文件的属性选项卡的屏幕截图。
<MajorUpgrade
AllowDowngrades="no"
DowngradeErrorMessage="A newer version of [ProductName] is already installed."/>