Wix、Heat 和 Wxi 文件

Posted

技术标签:

【中文标题】Wix、Heat 和 Wxi 文件【英文标题】:Wix,Heat and Wxi File 【发布时间】:2009-10-21 06:39:02 【问题描述】:

我正在使用 heat.exe 生成文件列表,我需要替换 File/@Source="SourceDir" 所以我传递 -var 和目录名称,但这些变量是在我的 .wxi 文件中定义的 如何在热生成的 wxs 文件中包含 .wxi 文件。因为每次构建时都会生成此文件。

【问题讨论】:

我想我找到了解决此问题的另一个选项。使用 -var 并在蜡烛命令行上使用相同的。 【参考方案1】:

为什么要替换 SourceDir?

您可以使用-b 开关传递其他基本文件夹以点亮,对于 SourceDir 的所有引用,WiX 将在您指定的基本文件夹中查找。使在机器之间移动东西变得容易,只需更新构建系统中的参数,而不是编辑包含文件。

【讨论】:

当您有多个文件夹,具有相同的文件名时,SourceDir 是一场噩梦。【参考方案2】:

wix 3.7 的更新,当您在 wixproj 中使用 HeatDirectory 任务而不是运行 heat.exe 时,您可以使用 PreprocessorVariable 来设置 SourceDir。

<Target Name="BeforeBuild">
<HeatDirectory Directory="..\distribution"
               PreprocessorVariable="myVar"  <--- your variable name
               OutputFile="HeatGeneratedFileList.wxs"
               ComponentGroupName="HeatGenerated"
               DirectoryRefId="INSTALLFOLDER"
               AutogenerateGuids="true"
               ToolPath="$(WixToolPath)"
               SuppressFragments="true"
               SuppressRegistry="true"/>
</Target>

更多细节:

http://wix.sourceforge.net/manual-wix3/msbuild_task_reference_heatdirectory.htm

WIX HeatDirectory Task - Setting the preprocessorVariable

【讨论】:

以上是关于Wix、Heat 和 Wxi 文件的主要内容,如果未能解决你的问题,请参考以下文章

在 Visual Studio WiX 项目中使用 WXI 文件

wix heat 使用 xsl 文件移除命名空间

Wix 资源收集工具“Heat”。如何获取具有动态名称的文件,例如构建时生成的 Microsoft 运行时文件

如何让 Wix Heat.exe 保留自定义文件 ID?

Wix错误未定义的预处理器变量(错误CNDL0150)

Wix Installer Heat.exe 错误 参数“exePath”无效