我没有尝试过,但您可能可以使用自定义操作来执行此操作。有关示例,请参阅从 MSI 到 WiX,第 5 部分。该Custom Action Type 38
示例包括:
<Directory Id="INSTALLDIR" Name="Minimal" LongName="MinimalInstallation">
<Component Id="Component1"
Guid="{A77C5B06-132D-4884-8E17-EA10A83C812D}">
<File Id="ReadMe" DiskId="1" Name="Readme.txt" Source="Readme.txt" Vital="yes" KeyPath="yes" />
<!--RemoveFile Id="RemoveCopy" Name="ReadMe2.txt" On="uninstall" /-->
</Component>
</Directory>
....
<CustomAction Id="CopyReadMe"
Script="vbscript">
<![CDATA[
Set fso = CreateObject("Scripting.FileSystemObject")
path = Session.Property("INSTALLDIR")
fso.CopyFile path & "ReadMe.txt", path & "ReadMe2.txt"
]]>
</CustomAction>
<InstallExecuteSequence>
<Custom Action="CopyReadMe" After="InstallFinalize">Not Installed</Custom>
</InstallExecuteSequence>
此处安装了 Readme.txt,并使用 vbscript 自定义操作复制到 ReadMe2.txt。如果您在 vbscript 中进行一些版本和/或修改日期检查,您可以自行控制 ReadMe2.txt 是否被覆盖。并且没有 RemoveFile,wix 不会卸载 ReadMe2.txt,因为它不知道该文件存在。
对于升级,可能会在安装之前使用不同的自定义操作将 ReadMe2.txt 复制回 Readme.txt。这样,您可以让 wix 处理普通文件版本控制规则,以确定是否可以更新 Readme.txt。然后您不必将版本处理添加到 vbscript。