我的 WiX 安装程序(Wix 3.10、MSI 4.5)使用MajorUpgrade
用于更新。要安装的文件是用heat.exe
在预构建中。当前(较旧的)msi 文件包含一个文件nlog.dll
(附带 NuGet 包v4.1.0
)其文件版本为4.1.0.0
,产品版本4.1.0
和最后写入时间2015-09-01
.
由于 nlog 团队遇到了一些严重的命名问题,他们发布了更新的 NuGet 包v4.1.1
,包含更新的nlog.dll
它的文件版本减少回4.0.0.0
而其产品版本已增加至4.1.1
,最后写入时间是2015-09-14
.
现在我遇到了一个相关的问题,就像罗比在这里所做的那样:wix 主要升级未安装所有文件:当我安装新的 msi 软件包并执行主要升级时,现在nlog.dll
(根据其文件版本较新,但根据其文件日期和产品版本较旧)正在被删除,但新的nlog.dll
未安装。
然而,使用Schedule="afterInstallExecute"
or Schedule="afterInstallFinalize"
正如所建议的那样,这对我来说不起作用。它不会像 Robbie 的情况那样删除较新的文件并且不安装较旧的文件,而是不会覆盖当前文件,而只是将其保留在原处。
长话短说,我希望我的安装程序只需安装它附带的所有文件,无论任何文件/产品/程序集版本控制内容如何。在某些情况下,需要用旧文件替换新文件。您不能告诉安装程序引擎忽略文件版本/日期吗?如果没有,我有什么选择?
您可以将 REINSTALLMODE 属性设置为 AMUS 而不是 OMUS。这将影响全球所有组件。
另一个技巧是使用“版本说谎”。您可以在此处创作具有更高版本的文件元素。使用热量会使这变得困难,因为现在您必须在编译之前转换 XML。
当然,真正的解决办法是打nlog团队的头。但根据我多年来从他们身上看到的情况,这永远不会发生。也许您只是使用资源编辑器来破解 DLL 并“修复”版本#。这是假设你不需要它的强命名。不过,这对我来说感觉很脏,而且可能是 CM 的噩梦。
或者直接转储 nlog。 :)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)