有没有办法将属性值设置为格式化的安装日期/时间?
我正在为我们仍然依赖的旧VB6应用程序创建一个MSI安装程序(是的,我知道,在它死之前进行升级)。
我正在尝试为install-folder中的用户数据文件添加备份文件夹(不是我的应用程序设计,也不是我的应用程序)。不幸的是,此应用程序的每个用户都有自己的系统上安装的数据文件副本(每个用户的专用计算机),安装程序具有默认文件。我想创建一个备份文件夹,以便我可以手动(如有必要)返回并检索该文件的先前版本。
我在想什么 c:\ program files(x86)\ app * .mdb => c:\ program files(x86)\ app \ backups \ 201804091125
答案 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
标志已经有一段时间了。但是对于正常部署,常规方式应该保留数据库文件,不要覆盖。
自定义操作概述 :在安装程序中自动设置了名为Time和Date的属性,但{{1} }属性通常包含路径名中非法的字符。可以只获取属性并替换非法字符。但是,日期分隔字符可能因区域设置而异,因此难以预测。您的代码可能会很快变得混乱并且测试将具有挑战性(可能需要根据分发范围进行测试的许多区域设置 - 真正具有全球功能的软件包具有挑战性。)
我宁愿以其他方式获取日期和时间 - 通过一些编程API调用,我可以确定数据返回的格式。您还需要在延迟模式下运行此自定义操作,以确保它不会#39 ; t拒绝访问权限(操作用户权限不足)。设置和工作总是相当有点笨拙。也许先尝试替代方法?
如果已指定Date
,我一直考虑添加自定义操作以中止安装。我更喜欢这个和#34所描述的替代方法;永远不会覆盖"进行所有这些复制的自定义操作。