0

我们只需要在majorupgrade 时复制一个文件。如果发生全新安装,则不应复制。

我试图找到可以做到的文件属性和组件属性,但没有找到。

重大升级时如何允许文件复制?

4

2 回答 2

1

您需要编写自定义操作来复制文件。

<CustomAction Id="QtExecCopyPropertyFileCmd" Property="QtExec64CmdLine" Value="&quot;[SystemFolder]cmd.exe&quot; /c copy &quot;[INSTALL_DIR]\Test.txt&quot; &quot;[BKP_DIR]\Test.txt&quot;"/>
<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&lt;&gt;"")</Custom>
 <Custom Action="QtExecCopyPropertyFile" After="QtExecCopyPropertyFileCmd">(NOT Installed) AND (PREVIOUSFOUND&lt;&gt;"")</Custom>
于 2013-06-03T13:55:32.090 回答
0

您可以让组件安装条件检查现有产品然后安装。如果注册表项存在,您可以检查以下链接Wix 有条件地安装组件以获取更多详细信息。在文件搜索中,您还可以进行注册表搜索

于 2013-06-05T12:05:11.943 回答