软件包版本从“1.0.1”更改为“1.0.2”
MajorUpgrade 计划为“afterInstallExecute”。
仅运行 MSI 1.0.2 即可正确安装该版本。
运行 MSI 1.0.1 可正确安装版本。但在其之后运行 MSI 1.0.2,不会替换可执行文件。
(如果 MSI 1.0.2 执行时写入日志,在日志中搜索可执行文件名称,会出现以下行: 文件表键“MyExecutable.exe”表示的文件没有符合条件的二进制补丁)
第一: 可执行文件是.NET 8 独立应用程序。它自己的“版本”并没有改变。但文件“内容”不同。 MSI 是否只是检查可执行文件的版本,并得出没有“二进制补丁”的结论?
第二: 您知道如何修复/强制替换/解决这个问题吗?
MSI 是否只检查可执行文件的版本...?
是的。详细日志文件还应该向您显示 Windows 安装程序选择跳过安装文件的原因。
您知道如何修复/强制替换/解决此问题吗?
首先,正确地对二进制文件进行版本控制。如果可执行文件发生更改,请更新其版本。这只是一个很好的编程实践。
其次,我会提前安排重大升级。更好的是,我会完全删除
MajorUpgrade
元素,并让 WiX v5 中的默认设置为您处理它。