加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

Wix主要升级,无论新文件版本如何都替换文件

发布时间:2020-12-14 01:59:39 所属栏目:Windows 来源:网络整理
导读:我的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团队遇
我的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.

现在我遇到了一个相关的问题,就像Robbie在这里所做的那样:wix major upgrade not installing all files:当我安装新的msi软件包并执行主要升级时,现在的nlog.dll(根据其文件版本更新,但根据其更新版本)正在删除文件日期和产品版本,但未安装新的nlog.dll.

但是,按照建议使用Schedule =“afterInstallExecute”或Schedule =“afterInstallFinalize”对我来说不会起作用.不像在Robbie的情况下那样删除较新的文件而不安装较旧的文件,它不会覆盖当前文件,只是将其留在原位.

简而言之,我希望我的安装程序只需安装随附的所有文件,无论文件/产品/程序集版本是什么.在有效的情况下,需要用较旧的文件替换较新的文件.你不能告诉安装程序引擎忽略文件版本/日期吗?如果没有,我的选择是什么?

解决方法

您可以将REINSTALLMODE属性设置为AMUS而不是OMUS.这将影响全球所有组件.

另一个技巧是使用“版本说谎”.这是您使用更高版本创建文件元素的位置.使用heat可能会使这很困难,因为现在您必须在编译之前转换XML.

当然,真正的解决方案是击中nlog团队.但根据我多年来从他们身上看到的东西,它永远不会发生.也许您只是使用资源编辑器来破解DLL并“修复”版本#.这假设您不需要强名称.这对我来说感觉很脏,可能是CM的噩梦.

或者只是转储nlog.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读