有没有办法将属性值设置为格式化的安装日期/时间

时间:2018-04-09 15:28:20

标签: wix windows-installer custom-action

有没有办法将属性值设置为格式化的安装日期/时间?

我正在为我们仍然依赖的旧VB6应用程序创建一个MSI安装程序(是的,我知道,在它死之前进行升级)。

我正在尝试为install-folder中的用户数据文件添加备份文件夹(不是我的应用程序设计,也不是我的应用程序)。不幸的是,此应用程序的每个用户都有自己的系统上安装的数据文件副本(每个用户的专用计算机),安装程序具有默认文件。我想创建一个备份文件夹,以便我可以手动(如有必要)返回并检索该文件的先前版本。

我在想什么 c:\ program files(x86)\ app * .mdb => c:\ program files(x86)\ app \ backups \ 201804091125

1 个答案:

答案 0 :(得分:0)

这将是匆忙。请告诉我什么不清楚。

自定义操作 :为了实现您描述的内容,您通常需要自定义操作。这总是很不幸,因为它们非常容易出错:Why is it a good idea to limit the use of custom actions in my WiX / MSI setups?

替代? :如果您问我将数据库安装在自己的组件中,请将该文件作为密钥文件并将组件设置为永久永远不会覆盖,如果密钥路径存在

在WiX源中:对于WiX组件元素,请设置以下属性:Permanent="yes" NeverOverwrite="yes")。我不是100%确定如果你做了一些愚蠢的事情会发生什么,比如在安装过程中设置REINSTALLMODE="amus"(强制覆盖所有文件,无论版本如何)。我测试NeverOverwrite标志已经有一段时间了。但是对于正常部署,常规方式应该保留数据库文件,不要覆盖。

自定义操作概述 :在安装程序中自动设置了名为TimeDate的属性,但{{1} }属性通常包含路径名中非法的字符。可以只获取属性并替换非法字符。但是,日期分隔字符可能因区域设置而异,因此难以预测。您的代码可能会很快变得混乱并且测试将具有挑战性(可能需要根据分发范围进行测试的许多区域设置 - 真正具有全球功能的软件包具有挑战性。)

我宁愿以其他方式获取日期和时间 - 通过一些编程API调用,我可以确定数据返回的格式。您还需要在延迟模式下运行此自定义操作,以确保它不会#39 ; t拒绝访问权限(操作用户权限不足)。设置和工作总是相当有点笨拙。也许先尝试替代方法?

如果已指定Date,我一直考虑添加自定义操作以中止安装。我更喜欢这个和#34所描述的替代方法;永远不会覆盖"进行所有这些复制的自定义操作。