我们只需要在majorupgrade 时复制一个文件。如果发生全新安装,则不应复制。
我试图找到可以做到的文件属性和组件属性,但没有找到。
重大升级时如何允许文件复制?
您需要编写自定义操作来复制文件。
<CustomAction Id="QtExecCopyPropertyFileCmd" Property="QtExec64CmdLine" Value=""[SystemFolder]cmd.exe" /c copy "[INSTALL_DIR]\Test.txt" "[BKP_DIR]\Test.txt""/>
<CustomAction Id="QtExecCopyPropertyFile" BinaryKey="WixCA" DllEntry="CAQuietExec64" Execute="immediate" Return="check"/>
使用升级属性检查是否安装了以前的设置。
<Upgrade Id="{YOUR-GUID-HERE}">
<UpgradeVersion Property="PREVIOUSFOUND" Minimum="1.0.0" IncludeMinimum="yes" Maximum="$(var.Version)" IncludeMaximum="no" />
</Upgrade>
<Property Id="PREVIOUSFOUND" Secure="yes" />
在安装执行序列中调用自定义操作。它只会复制升级中的文件。
<Custom Action="QtExecCopyPropertyFileCmd" After="AppSearch">(NOT Installed) AND (PREVIOUSFOUND<>"")</Custom>
<Custom Action="QtExecCopyPropertyFile" After="QtExecCopyPropertyFileCmd">(NOT Installed) AND (PREVIOUSFOUND<>"")</Custom>
您可以让组件安装条件检查现有产品然后安装。如果注册表项存在,您可以检查以下链接Wix 有条件地安装组件以获取更多详细信息。在文件搜索中,您还可以进行注册表搜索