Wix heat.exe与项目收获类型

时间:2010-09-02 15:45:11

标签: .net wix teamcity continuous-integration

我正在使用最新版本的Wix 3.5,我正在尝试使用heat.exe生成一个片段文件。命令行是:

"%WIX%\bin\heat.exe" project "MyProj.csproj" -pog Binaries -pog Content -suid -directoryid 
INSTALLLOCATION -ag -template fragment -out "Files.wxs"

我遇到的问题是生成的文件中缺少我的项目所依赖的程序集。这是预期的行为吗?我该如何添加它们?

我应该使用dir收获类型吗?如何删除* .pdb或* .vshost.exe呢?

我想将它与CI Server(TeamCity)一起使用

修改: 我尝试了-pog Satellites但无法正常工作

3 个答案:

答案 0 :(得分:8)

不幸的是,这是WiX的一个已知问题:

Heat doesn't harvest referenced assemblies

从错误评论中看,支持将在WiX 4.0中添加。

答案 1 :(得分:1)

我知道这是一个老问题,但这个主题可能包含一些可能解决方案的想法: How to add a whole directory or project output to WiX package

提到的工具之一,Paraffin 3.1,有各种命令行开关,允许您排除不相关的文件。 http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/06/28/paraffin3-1-new-and-improved.aspx

答案 2 :(得分:0)

在我们的CI版本中,我们使用带有手工制作的wxs文件的WiX 以下是构建文件的内容:

<Target Name="BuildSetup"  DependsOnTargets="BuildSetupVersion">
    <Exec Command="$(WIX-ToolPath)\candle.exe -nologo -out $(MSBuildProjectDirectory)\bin\Debug\Designer.wxs UI_RUS.wxs Bin.wxs" WorkingDirectory = "$(MSBuildProjectDirectory)\bin\Debug"/>
    <Exec Command="$(WIX-ToolPath)\light.exe -wx -out Setup_$(Major).$(Minor).$(Build).$(Revision).msi Designer.wixobj UI_RUS.wixobj Bin.wixobj" WorkingDirectory = "$(MSBuildProjectDirectory)\bin\Debug"/>
    <Message Text="##teamcity[publishArtifacts '$(MSBuildProjectDirectory)\bin\Debug\Setup_$(Major).$(Minor).$(Build).$(Revision).msi']"/>-->
</Target>

Designer.wxs - 包含特定于程序的msi信息(UpgradeCode,msi版本和包信息)。
UI_culture(本例中为RUS).wxs - 包含自定义本地化WiX UI Bin.wxs - 包含所有需要的文件。(你可以使用wxi生成和使用WiX的包括自动化它),但我们只是手动编写这个文件。