[wix-users] Reducing WiX light.exe build time when packaging third party installation packages

Neil Sleightholm neil at x2systems.com
Tue Feb 2 13:29:01 PST 2016


I copied this from a SQL install where not compressing and giving a URL made sense - I have used it with compressed and it helps, possibly  not as much, at the end of the day compressing a file will be expensive.

Neil

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of David Bernstein
Sent: 02 February 2016 18:19
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Subject: Re: [wix-users] Reducing WiX light.exe build time when packaging third party installation packages

Thanks Neil.

Wouldn't Compressed="no" be required to keep the third-party EXE bundled with my EXE?

I tried following your instructions (both for Compressed="no" and Compressed="yes"), but I get The ExePackage element must have attribute 'DownloadUrl' when child element 'RemotePayload' is present.

IIUC, I'm not interested in a DownloadUrl, because I want the third party packages to be bundle in the EXE I'm creating.
What am I doing wrong?

Another related question: Since Heat.exe ran very quickly on the third-party EXE, is there a way to avoid this manual step, and have the WiX solution do this by itself (if it speeds up Light.exe)?

Thanks again,
David

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of Neil Sleightholm
Sent: Tuesday, February 2, 2016 7:31 PM
To: WiX Toolset Users Mailing List <wix-users at lists.wixtoolset.org>
Subject: Re: [wix-users] Reducing WiX light.exe build time when packaging third party installation packages

For an exe light has to generate a payload, this can take a while so if the exe is fairly static I tend to get "heat" to generate a RemotePayload and then use that in my ExePackage element.

The heat syntax is:
	heat payload ThirdPartPackage.exe -o ThirdPartPackage.wxs

You can then use this like this:
      <ExePackage Id="ThirdPartPackage"
        DisplayName="ThirdPartPackage"
        Cache="no"
        Compressed="no"
        PerMachine="yes"
        Permanent="no"
        Vital="yes"
        Name="Redist\ThirdPartPackage.exe"
        InstallCommand="..."
        UninstallCommand="..."
        DetectCondition="...">
        <RemotePayload 
          CertificatePublicKey="..." 
          CertificateThumbprint="..."
          Description="ThirdPartPackage" 
          Hash="..." 
          ProductName="ThirdPartPackage" 
          Size="21321" 
          Version="1.2.3.4" />
      </ExePackage>

Hope that helps.
Neil

-----Original Message-----
From: wix-users [mailto:wix-users-bounces at lists.wixtoolset.org] On Behalf Of David Bernstein
Sent: 02 February 2016 17:09
To: wix-users at lists.wixtoolset.org
Subject: [wix-users] Reducing WiX light.exe build time when packaging third party installation packages

Hi,

I have a couple of WiX bundles which I'd like to come bundled with some common third party packages or bundles.
See simplified rough outline below.
When I turn Compressed="yes" on for the ExePackage I get the desired functionality, however WiX seems to spend a lot of time in the build process due to this (roughly 5 seconds for a single 65MB ThirdPartPackage.exe). This is on a strong server using an SSD.
Naturally, this gets worse when more bundles are built and more third-party packages are added.
Examining the VS build logs I can see that most time is spent in Light.exe.
Turning on pedantic logs it appears like most time is spent during "Loading payload '... ThirdPartyPackage.exe' into container." (this is an impression - no times are logged).
Why is Light.exe taking so long to load a large payload into a container?
Are there any settings to play with which can speed this up?
For example (wild guesses), increasing the I/O buffer size or notifying Light that ThirdPartyPackage.exe is already compressed and no attempt should be made to compress it or split it?

Bundle.wxs
<Bundle ...>
    <Chain>
      <PackageGroupRef Id="ThirdPartyPackageGroup" />
      <ExePackage... />
    </Chain>
</Bundle>

Prerequisites.wxs
<Fragment>
    <PackageGroup Id="ThirdPartyPackageGroup">
      <ExePackage Id="ThirdPartyPackage" Compressed="yes" SourceFile="$(sys.SOURCEFILEDIR)\Prerequisites\ThirdPartyPackage.exe" .../>
    </PackageGroup>
</Fragment>

Thanks,
David

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fwww.firegiant.com%2f&data=01%7c01%7cDAVBERNS%40064d.mgd.microsoft.com%7c6ea0f21cd7364ca2d8f908d32bf69f7f%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=NR2FBcf0Cd8G38%2bqtqy8FbPhaRIAVHyVIR%2fL1YDB4vY%3d

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant https://na01.safelinks.protection.outlook.com/?url=http%3a%2f%2fwww.firegiant.com%2f&data=01%7c01%7cDAVBERNS%40064d.mgd.microsoft.com%7c6ea0f21cd7364ca2d8f908d32bf69f7f%7c72f988bf86f141af91ab2d7cd011db47%7c1&sdata=NR2FBcf0Cd8G38%2bqtqy8FbPhaRIAVHyVIR%2fL1YDB4vY%3d

____________________________________________________________________
WiX Toolset Users Mailing List provided by FireGiant http://www.firegiant.com/


More information about the wix-users mailing list