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,它找不到文件...

我尝试的第三件事:

我试图将SOURCEDIRvar 更改为我自己的变量,所以我可以将它用作常规组件,这样. 但它不允许我更改变量名。它在尝试更改时说:

heat.exe : error HEAT0319 : The '-out' or '-o' parameter must specify a file path.

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

有任何想法吗?

4

1 回答 1

3

您可以使用 File 元素上的 Compressed 属性来排除文件在构建时被压缩到 MSI 中。然后,您可以根据具体情况替换此文件的内容。像平常一样创作并像平常一样安装,一切都会好起来的,而无需做任何花哨的事情。

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

<Component>
  <File Source="$(var.productFamily)$(var.productSummary).exe.config"
        Compressed='no' />
  </File>
</Component>
于 2013-04-04T12:35:54.373 回答