11

I'm using the lastest version of Wix 3.5 and I'm trying to generate a fragment file using heat.exe. The command line is :

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

The problem I'm having is that the assemblies my project is depending upon are missing from the generated file. Is this the intended behaviour ? How can I add them ?

Should I use the dir harvesting type ?! How to remove *.pdb or *.vshost.exe then ?

I want to use it with CI Server (TeamCity)

edit: I tried -pog Satellites and doesn't work either

Palle Due
  • 5,929
  • 4
  • 17
  • 32
Catalin DICU
  • 4,610
  • 5
  • 34
  • 47
  • I'm experiencing the same problem. The output of the project is captured (everything it produces), but none of the dependencies. I'm about to resort to `dir` harvesting as well. – Paul Turner Nov 10 '10 at 18:14

3 Answers3

8

Unfortunately this is a known issue with WiX:

Heat doesn't harvest referenced assemblies

From the bug comments, it looks like support will be added in WiX 4.0.

Loring
  • 323
  • 2
  • 12
Thomas Bratt
  • 48,038
  • 36
  • 121
  • 139
  • I think I would have preferred they got this fixed before getting Burn up and running. Let's hope that v4 has a shorter gestation than v3.5/3.6... – David Keaveny Nov 10 '11 at 22:27
1

I know this is an old question, but this thread might contain some ideas for possible solutions: How to add a whole directory or project output to WiX package

One of the tools mentioned, Paraffin 3.1, has various command line switches that should allow you to exclude the files that are not relevant. http://www.wintellect.com/CS/blogs/jrobbins/archive/2009/06/28/paraffin3-1-new-and-improved.aspx

Community
  • 1
  • 1
RenniePet
  • 11,420
  • 7
  • 80
  • 106
0

In our CI build we are using WiX with hand crafted wxs files.
Here is content of the build file:

<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 - contains program specific msi info (UpgradeCode, msi Version, and Package info).
UI_culture(RUS in this example).wxs - contains custom localized WiX UI.
Bin.wxs - contain all needed files.(you can automate it with wxi generation and using WiX's includes), but we simply write this file manually.

Sergey Mirvoda
  • 3,209
  • 2
  • 26
  • 30
  • Hi, this is interesting stuff but doesn't answer the question : why doesn't heat.exe generate entries for the dependent assemblies with project harvesting – Catalin DICU Sep 14 '10 at 14:12
  • @Catalin DICU. Yes I know. But I answered this way only because of out of luck with same task. After week of fighting with heat we decided to write some wxs files manually and some via generating wxi file with msbuild. – Sergey Mirvoda Sep 14 '10 at 16:33
  • I ended up by using directory harvesting but it's puts the .pdb-s too. Not a big deal, I did't tried to filter them out using xslt; don't know if that would work – Catalin DICU Sep 14 '10 at 17:20