0

我正在创建一个 WiX 安装程序,我想将最终用户计算机上存在的文件移动到他们选择的位置。但是,CopyFile 不起作用,并且日志文件未显示任何错误。

这是我的目录树:

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="ProgramFilesFolder">
    <Directory Id="INSTALLFOLDER" Name="Remindex">
    </Directory>
  </Directory>
  <Directory Id="DATALOCATION" Name="File"/>
  <Directory Id="ORIGINALDATA"/>
</Directory>

还有我的 CopyFile 组件:

<DirectoryRef Id="TARGETDIR">
  <Component Id="CMP_Data" Guid="{C35F8888-D868-4B18-991E-29E217EFE445}" KeyPath="yes">
    <CopyFile Id="CopyData" 
              DestinationDirectory="DATALOCATION" 
              DestinationName="Remindex Local Data" 
              SourceProperty="ORIGINALDATA" 
              SourceName="Remindex Local Data" 
              Delete="yes"/>
  </Component>
</DirectoryRef>

DATALOCATION 是一个包含用户在 PathEdit 对话框中选择的路径的属性。ORIGINALDATA 是要移动的文件的原始位置。所以文件应该从 ORIGINALDATA 移动到 DATALOCATION。然而,什么都没有发生。我尝试将 ORIGINALDATA 放在 SourceDirectory 和 SourceProperty 属性中。

该组件在日志文件中显示了 3 次(不是并排显示),但我不确定如何处理这些条目:

Component: CMP_Data; Installed: Absent; Request: Local; Action: Local

_CMP_Data65; Installed: Null; Request: Local; Action: Local

_CMP_Data66; Installed: Null; Request: Local; Action: Local

任何建议将不胜感激。

4

1 回答 1

1

我的问题是我试图复制一个文件夹,而 CopyFile 仅适用于单个文件。

为了解决这个问题,我必须手动创建要复制的文件夹中的每个子文件夹,并使用所有旧文件夹的内容填充这些子文件夹。我将使用 CopyFile 并可以在 SourceName 属性 (SourceName="*") 中放置一个通配符以从特定子文件夹中获取所有内容。

于 2013-07-04T21:01:32.493 回答