[wix-users] Heat Command Issues / Limitations

Edwin Castro egcastr at gmail.com
Mon Apr 9 09:42:01 PDT 2018


The help for heat.exe says there is a way to suppress all sorts of things.
There is also an option to explicitly keep empty directories implying they
are not harvested by default.

<quote>
C:\>"%WIX%bin\heat.exe" -?
Windows Installer XML Toolset Toolset Harvester version 3.9.1208.0
Copyright (c) Outercurve Foundation. All rights reserved.

 usage:  heat.exe harvestType harvestSource <harvester arguments> -o[ut]
sourceFile.wxs

Supported harvesting types:

   dir      harvest a directory
   file     harvest a file
   payload  harvest a bundle payload as RemotePayload
   perf     harvest performance counters
   project  harvest outputs of a VS project
   reg      harvest a .reg file
   website  harvest an IIS web site

Options:
   -ag      autogenerate component guids at compile time
   -cg <ComponentGroupName>  component group name (cannot contain spaces
e.g -cg MyComponentGroup)
   -configuration  configuration to set when harvesting the project
   -directoryid  overridden directory id for generated directory elements
   -dr <DirectoryName>  directory reference to root directories (cannot
contain spaces e.g. -dr MyAppDirRef)
   -ext     <extension>  extension assembly or "class, assembly"
   -g1      generated guids are not in brackets
   -generate
            specify what elements to generate, one of:
                components, container, payloadgroup, layout, packagegroup
                (default is components)
   -gg      generate guids now
   -indent <N>  indentation multiple (overrides default of 4)
   -ke      keep empty directories
   -nologo  skip printing heat logo information
   -out     specify output file (default: write to current directory)
   -platform  platform to set when harvesting the project
   -pog
            specify output group of VS project, one of:
                Binaries,Symbols,Documents,Satellites,Sources,Content
              This option may be repeated for multiple output groups.
   -projectname  overridden project name to use in variables
   -scom    suppress COM elements
   -sfrag   suppress fragments
   -srd     suppress harvesting the root directory as an element
   -sreg    suppress registry harvesting
   -suid    suppress unique identifiers for files, components, & directories
   -svb6    suppress VB6 COM elements
   -sw<N>   suppress all warnings or a specific message ID
            (example: -sw1011 -sw1012)
   -swall   suppress all warnings (deprecated)
   -t       transform harvested output with XSL file
   -template  use template, one of: fragment,module,product
   -v       verbose output
   -var <VariableName>  substitute File/@Source="SourceDir" with a
preprocessor or a wix variable
(e.g. -var var.MySource will become
File/@Source="$(var.MySource)\myfile.txt" and
-var wix.MySource will become File/@Source="!(wix.MySource)\myfile.txt"
   -wixvar  generate binder variables instead of preprocessor variables
   -wx[N]   treat all warnings or a specific message ID as an error
            (example: -wx1011 -wx1012)
   -wxall   treat all warnings as errors (deprecated)
   -? | -help  this help information

For more information see: http://wixtoolset.org/
</quote>

Since heat.exe is producing an XML file and those things tend to be created
in memory and then later saved to disk as one operation I would expect
heat.exe would eventually start having issues depending on how much memory
the harvesting requires. Actual limits probably vary depending on the
details of the specific files getting harvested and perhaps the command
line options used. I'd definitely recommend dividing up your harvesting
into multiple harvests and compose them with ComponentGroupRef later on. I
am calling heat twice to harvest data files versus binary files just to
keep stuff organized even though I'm not having memory issues.

--
Edwin G. Castro


On Mon, Apr 9, 2018 at 9:22 AM, Ven H via wix-users <
wix-users at lists.wixtoolset.org> wrote:

> Actually, the total size of the folder is actually around 1.5 GB and the
> total file count is around 42,000. There are around 3200 folders included.
> Is Heat capable of handling this volume? If so, are there any dos and
> don'ts and is there any option / switch which should or should not be used
> to harvest this huge volume of files? Also, is there a need to split and if
> so, how?
> Also, if there are empty folders, then will heat harvest them or ignore
> them? Please advise. Also, I came across a link which seems to briefly
> touch upon some of these, but completely. It will be great, if anyone can
> please help.
>
> https://blogs.msdn.microsoft.com/icumove/2009/05/31/right-
> corner-wix-heat-left-corner-thousands-of-files/
>
> Regards,
> Venkatesh
>
> On Mon, Apr 9, 2018 at 6:50 PM, Ven H <venh.123 at gmail.com> wrote:
>
> > I have a folder with lots of nested sub folders with files inside. The
> > files include DLLs, COMs, images, C# source code, config files, XML
> files,
> > JS, CSS, HTML, asp, aspx and so on. The size of the outermost folder is
> > around 1.4 GB. When I am running Heat command on this, it does throw some
> > warnings on some DLLs and COMs. Also, for a few files, the heat command
> > seems enormous amount of time. I am not able to figure out why this is
> > happening or how to troubleshoot this. If you have any idea, can you
> please
> > help?
> >
>
> ____________________________________________________________________
> WiX Toolset Users Mailing List provided by FireGiant
> http://www.firegiant.com/
>


More information about the wix-users mailing list