将外部文件复制到安装目录WiX

3
我有和这里一样的问题。我有一个.config文件,我想从源目录(我的.msi文件所在的地方)复制到我的安装目录。
我尝试了几件事情: 我尝试的第一件事:
<DirectoryRef Id="ProgramFilesFolder">
  <Component Id="$(var.productFamily)$(var.productSummary).config" Guid="$(var.GUID_CMP_DemoConfig)" KeyPath="yes">
    <CopyFile Id="$(var.productFamily)$(var.productSummary).config"
          SourceName="$(var.productFamily)$(var.productSummary).exe.config"
          SourceProperty="SOURCEDIR"
          DestinationDirectory="$(var.productFamily)$(var.productType)"
          DestinationName="$(var.productFamily)$(var.productSummary).exe.config"
           >
    </CopyFile>
  </Component>
</DirectoryRef>

但是这种方法失败了,因为它试图在应用程序安装之前复制文件,所以我的目录仍然不存在。
我尝试的第二件事:
将其添加为安装程序的另一个组件。
      <Component Id="$(var.productFamily)$(var.productSummary).config" Guid="$(var.GUID_CMP_DemoConfig)">
        <File Id="$(var.productFamily)$(var.productSummary).config"
              Name="$(var.productFamily)$(var.productSummary).exe.config"
              DiskId="1" KeyPath="yes"
              Source="$(var.productFamily)$(var.productSummary).exe.config" >
        </File>
      </Component>

通过这种方法,我应该能够从安装程序的Release文件夹中复制到我的INSTALLDIR,但是当我在VS 2010上构建项目时,它找不到文件...
第三件事我尝试过:
我尝试将SOURCEDIR变量更改为自己的变量,以便我可以将其用作常规组件,执行this。 但是它不允许我更改变量名称。 尝试更改时会显示以下消息: heat.exe : error HEAT0319 : The '-out' or '-o' parameter must specify a file path. 所以,我只想从我的.msi所在位置复制一个文件,但我仍然无法做到...有任何想法吗?

可能是[WiX:CopyFile属性]的重复问题(https://dev59.com/qEbRa4cB1Zd3GeqPzE0M)。 - Rob Mensching
我建议选择“重复”,因为它听起来你正在做与其他问题中回答的相同的事情。如果你在做不同的事情,请更新你的问题的第一段,解释你的问题与重复的问题有何不同。 - Rob Mensching
@Rob- 我的理解是DuplicateFiles只能复制由安装程序安装的文件。他的描述是他想从SourceDir复制一个文件。我认为他试图创建一个具有变化点的安装程序,而无需重新构建它。 - Christopher Painter
@ChristopherPainter 您是正确的,但 MoveFile 表可以将任何文件复制到任何位置。我们使用 WiX 工具集中的 CopyFile 元素来包装这两个表。 - Rob Mensching
我需要更深入地挖掘这个。要记住的东西太多了。 :) - Christopher Painter
显示剩余2条评论
1个回答

3
您可以使用文件元素上的Compressed属性,在构建时将某个文件排除在MSI之外。然后您可以根据具体情况替换此文件的内容。像正常情况下一样进行作者和安装,没有必要做任何花哨的事情。
例如,以下示例添加了压缩属性以覆盖Package元素设置的默认压缩:
<Component>
  <File Source="$(var.productFamily)$(var.productSummary).exe.config"
        Compressed='no' />
  </File>
</Component>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接