Jools99
Jools99

Reputation: 151

Wix Burn Prerequisite Step - Windows Installer 4.5 Download details (RemotePayload element)

Where, oh where, do you find the full URL, CertificatePublicKey & CertificateThumbprint and SHA-1 hash values for the various Windows Installer 4.5 redistributables (i.e. WindowsXP-KB942288-v3-x86.exe, WindowsServer2003-KB942288-v4-x86.exe, WindowsServer2003-KB942288-v4-x64.exe, Windows6.0-KB942288-v2-x86.msu, etc.)?

I need these details for the Wix Burn "RemotePayload" element in order to perform a silent prerequisites-step download and install of Windows Installer 4.5 when it is missing from target systems. A good example is given in this https://stackoverflow.com/a/11308837/2430722, which was posted in answer to a different question:

<ExePackage Id="WinXP_x86"
          Cache="no"
          Compressed="no"
          PerMachine="yes"
          Permanent="yes"
          Vital="yes"
          Name="redist\WindowsXP-KB942288-v3-x86.exe"
          DownloadUrl="http://download.microsoft.com/download/2/6/1/261fca42-22c0-4f91-9451-0e0f2e08356d/WindowsXP-KB942288-v3-x86.exe"
          InstallCondition="VersionNT=v5.1 AND NOT VersionNT64 AND VersionMsi &lt; v4.5"
          InstallCommand="/quiet /norestart">

    <RemotePayload ProductName="Windows Installer 4.5"
               Description="Windows Installer 4.5 Setup"
               CertificatePublicKey="F321408E7C51F8544B98E517D76A8334052E26E8"
               CertificateThumbprint="D57FAC60F1A8D34877AEB350E83F46F6EFC9E5F1"
               Hash="86E1CC622DBF4979717B8F76AD73220CDB70400B"
               Size="3327000"
               Version="4.5.0.0" />

    <ExitCode Behavior="forceReboot"/>

</ExePackage>

I have searched and searched and can't find where this information is made available. Can anyone help?

Upvotes: 3

Views: 1462

Answers (3)

Tamir Daniely
Tamir Daniely

Reputation: 1710

Best practice I've found for this is to take the bootstraper package from the windows SDK which already contains all the links, hashes, files names, commands and conditions that are required for adding the MSI prereq, all you need to do is trivially translate the package's package.xml to a burn ExePackage.

On a PC with Windows SDK 8.1, look here:

C:\Program Files (x86)\Microsoft SDKs\Windows\v8.1A\Bootstrapper\Packages\WindowsInstaller4_5

Upvotes: 0

caveman_dick
caveman_dick

Reputation: 6637

You can use heat to generate the RemotePayload for you:

heat.exe payload PATH_TO_FILE -o Output.wxs

This is actually currently undocumented on the page linked above but checking the exe it is still there in v3.8:

Windows Installer XML Toolset Toolset Harvester version 3.8.1128.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/

Upvotes: 4

Brock Hensley
Brock Hensley

Reputation: 3645

I'm not sure you need the key/thumbprint/hash etc. but if you want it:

Right click on the file, select Properties

Click Digital Signatures tab

Select the signature and click Details

Click View Certificate

Click Details tab

Click Public key field, then you can copy the entire data field below.

When pasting it, remove all spaces and linebreaks.

Upvotes: 0

Related Questions