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

Installation 将外部文件复制到安装目录WiX,installation,wix,windows-installer,wix3.5,Installation,Wix,Windows Installer,Wix3.5,我也有类似的问题。我有一个.config文件,我想从源目录(我的.msi文件所在的位置)复制到我的安装目录 我尝试了几件事: 我尝试的第一件事: <DirectoryRef Id="ProgramFilesFolder"> <Component Id="$(var.productFamily)$(var.productSummary).config" Guid="$(var.GUID_CMP_DemoConfig)" KeyPath="yes"> <Co

我也有类似的问题。我有一个
.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>

但是这个方法失败了,因为它试图在安装应用程序之前复制文件,所以我的目录仍然不存在

我试过的第二件事:

<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
上构建项目时,它找不到文件

我试过的第三件事:

<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>
我尝试将
SOURCEDIR
var更改为我自己的变量,这样我就可以将其用作常规组件,但它不允许我更改变量名。尝试更改时,它会显示:

heat.exe:错误HEAT0319:'-out'或'-o'参数必须指定文件路径。

所以我只想从我的
.msi
所在的位置复制一个文件,但我仍然无法做到


有什么想法吗?

您可以使用File元素上的Compressed属性在生成时将文件从压缩到MSI中排除。然后您可以逐个替换此文件的内容。像普通一样编写,像普通一样安装,一切都会很好,无需做任何花哨的事情

例如,以下内容添加了
Compressed
属性,以覆盖
Package
元素设置的默认压缩:

<Component>
  <File Source="$(var.productFamily)$(var.productSummary).exe.config"
        Compressed='no' />
  </File>
</Component>


可能重复的问题我建议重复,因为听起来你做的事情与另一个问题中回答的相同。如果你做的事情不同,请更新问题的第一段,解释你的问题与重复的问题有何不同?@RobMensching我也这么做,但正如我所说,t他们的解决方案对我不起作用。问题没有什么不同,但我不明白答案…@Rob-我的印象是DuplicateFiles只能复制安装程序安装的文件。他的描述是他想从SourceDir复制一个文件。我想他正试图创建一个安装程序,其中包含一个与您不同的点t重建它。我正在尝试创建一个安装程序,该安装程序会像组件一样获取外部文件并将其复制到项目中,但此文件位于
.msi
所在的位置。重建它不是问题。问题是我尝试的任何解决方案都不起作用:(