小编Han*_*nes的帖子

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

我的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主要升级没有安装所有文件:当我安装新的msi软件包并执行主要升级时,现在nlog.dll(根据其文件版本更新,但更旧)根据其文件日期和产品版本)正在删除,但新nlog.dll安装没有.

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

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

windows-installer wix major-upgrade

6
推荐指数
1
解决办法
2797
查看次数

如何将设置构建日期写入属性

更新2:功能的要求被拒绝,仅仅是因为维克斯不能支持这些“假”变量提供cmd.exe的。因此,下面公认的答案仍然是最佳解决方案。

更新:我已发出功能请求,以添加预处理器动态环境变量支持。一旦开发人员做出响应,我将更新此线程。


原始问题:

我想写出安装程序已建立到属性的日期。

<Property Name="BuildDate" Value="$(env.Date)" />
Run Code Online (Sandbox Code Playgroud)

要么

<Property Name="BuildDate" Value="$(sys.Date)" />
Run Code Online (Sandbox Code Playgroud)

抛出CNDL0150:“未定义的预处理程序变量”,而

<Property Name="BuildDate" Value="[Date]" />
Run Code Online (Sandbox Code Playgroud)

当然会将字符串“ [Date]”写入MSI属性。

我该如何实现?

编辑:在所有情况下,我都尝试过“日期”,结果相同。另外,添加一个新的环境变量“ BuildDate”并将其设置为“%DATE%”会消除编译错误,但是写入MSI的值不能解析为实际日期,而是生成字符串“%DATE%” ”。

wix

0
推荐指数
1
解决办法
2556
查看次数

标签 统计

wix ×2

major-upgrade ×1

windows-installer ×1