如何在Wix中由heat.exe生成的wxs文件中引用File元素

Sey*_*avi 5 msbuild windows-installer wix heat

我将为我的 Web 项目创建设置。我使用http://blog.bartdemeyer.be/2013/10/create-an-installer-for-website-with-wix-part-1/作为我的参考。在文章中间,作者创建了一个名为WebSiteContent.wxsusing heat.exe的文件:

<Target Name="Harvest">
<!-- Harvest all content of published result -->
<Exec
    Command='$(WixPath)heat dir $(Publish) -dr INSTALLFOLDER -ke -srd -cg MyWebWebComponents -var var.publishDir -gg -out $(WebSiteContentCode)'
    ContinueOnError="false"
    WorkingDirectory="." />
</Target>
Run Code Online (Sandbox Code Playgroud)

运行 msbuild 后,文件包含以下内容:

<?xml version="1.0" encoding="utf-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
  <!--...-->
  <Fragment>
    <ComponentGroup Id="MyWebWebComponents">
      <!--...-->
      <Component Id="cmpCDB7F4EFDEF1E65C3B12BEBAD7E4D7EA" Directory="INSTALLFOLDER" Guid="{7EA5DB39-513D-482B-9FDC-2F16FCE5E712}">
        <File Id="fil8994620207C22CA15AF75ACDD6420C79" KeyPath="yes" Source="$(var.publishDir)\Web.config" />
      </Component>
    </ComponentGroup>
  <!--...-->
  </Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud)

我想更改 web.config 文件内容的值,如从 WiX 更改 XML 节点值中所述,但我不知道如何将 WebSiteContent.wxs 文件之外的引用添加到 fil8994620207C22CA15AF75ACDD6420C79 元素。

我知道我可以将 xml 脚本添加到 WebSiteContent.wxs 文件中。但是因为在每个构建中它都会被清理,我不想在每个构建中更改 WebSiteContent.wxs 文件。

Tom*_*get 4

在属性中使用带有 # 前缀的文件 ID,如您引用的示例中所示。heat 生成的文件 ID 相对于其位置规范而言是稳定的。

如果这导致它不可读,您可以使用 heat 和 XSL 将文件 id 更改为固定值。