gpt4 book ai didi

wix - wix主要升级未安装所有文件

转载 作者:行者123 更新时间:2023-12-03 09:09:55 24 4
gpt4 key购买 nike

我有一个非常简单的WiX项目(3.7版),该项目安装了一些文件(.NET程序版本6.0.0.0)。我准备使用WiX中的MajorUpgrade功能发布新版本6.0.1.0。

我在Product元素中保持UpgradeCode不变,并将Version从6.0.0.0更改为6.0.1.0

<Product Id="*" Name="MyApp" Version="6.0.1.0" Manufacturer="Me" 
UpgradeCode="$(var.TheUpgradeCodeGUID)">

在安装了6.0.0.0的计算机上,我运行新的安装程序。

删除旧版本6.0.0.0的运行正常(删除所有已安装的文件),但是当安装程序继续安装新版本时,缺少2个文件:第三方DLL和第三方EXE(尚未删除)已更改)未重新安装。
<Component Id="AutomaticUpdaterWPF.dll" Guid="*">
<File Id="AutomaticUpdaterWPF.dll" Source="AutomaticUpdaterWPF.dll" KeyPath="yes" Checksum="yes" />
</Component>
<Component Id="wyUpdaterProgram" Guid="*">
<File Id="wyUpdaterProgram" Source="wyUpdate.exe" KeyPath="yes" Checksum="yes" />
</Component>

在主要升级过程中,已正确安装 中的所有其他文件(某些已修改,一些未修改,包括其他第三方DLL)。

如果在重大升级后单击“修复”,则2个丢失的文件会重新出现。
另外,如果我是第一次安装6.0.1.0版(不进行升级,而是先在干净的计算机上安装),则将直接且正常地安装这2个文件。
(已在多台Windows计算机(XP,7和8)上进行了测试

有人建议什么地方不对,如何解决?

最佳答案

提供的日志文件显示了计算机上已经存在的一些文件的较新版本:

MSI (s) (0C:5C) [16:13:25:890]: Disallowing installation of component: {015A4DC1-56F4-562B-96B5-B3BE0D45FA5F} since the same component with higher versioned keyfile exists
MSI (s) (0C:5C) [16:13:25:890]: Disallowing installation of component: {4B6A1404-3892-5BEF-AB47-8FE3149211A4} since the same component with higher versioned keyfile exists

我过去曾见过此更新程序存在此问题。克里斯托弗是正确的。更新程序更新了文件,但没有告知MSI(它不更新MSI,这不是正确的操作)。新的MSI认为机器上有更新的东西,选择不安装其文件,但是在升级过程中,旧软件包会删除文件(它不会注意到版本较新)。由于新安装程序选择不安装文件,因此最终没有任何结果……直到修复。

要变通解决此问题,您需要稍后移动RemoveExistingProducts操作。如果您使用的是MajorUpgrade元素,那么 Schedule='afterInstallExecute'Schedule='afterInstallFinalize'应该可以解决问题。您需要更加小心 Component Rules

另外,恕我直言,第三方供应商不应在MSI之外更新文件。他们的决定是迫使您的产品采用特定的升级方式。

关于wix - wix主要升级未安装所有文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15138731/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com