GRR Client installation files for Windows are provided as .EXE (Executable) files. These files can be installed interactively or pushed to clients using a software management tool such as SCCM. Administrators intending to deploy GRR using Group Policy Software Installation will find that they need installers packaged as a .MSI (Microsoft Scriptable Install) file. This post describes two ways to wrap the GRR Client .EXE into a .MSI file as required by Group Policy.
The first option is to use an open source tool called WiX Toolset. It’s a developer tool capable of creating complex software installation packages. Using the toolset involves the creation of a XML configuration file (sample provided) and a few command line operations.
An alternative is to use a commercial tool like MSI Wrapper. This purpose-built tool offers a point and click experience. I’ve evaluated the free version of the MSI Wrapper and found it adequately met the needs of this wrapping task.
Please continue reading below for a step-by-step guide of using each method.
WiX Toolset
Step 1) Create a grr.wxs configuration file in the same directory as your grr client installer exe.
An example in provided below. Steps 1a -> 1c are instructions for modifying the values highlighted in bold.
Step 1a) UpgradeCode = a unique GUID for this installation package. You can create a new one in your tool of choice or using GuidGen.
Step 1b) Version = the version of GRR you are packaging.
Step 1c) Source = the name of the file to be packaged.
Example grr.wxs
<?xml version="1.0"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" UpgradeCode="9DA302DE-B45A-4EE8-9758-E547CF3D57F3"
Name="GRR Agent" Version="3.0.0.2" Manufacturer="Grr Opensource" Language="1033">
<Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package"/>
<Media Id="1" Cabinet="product.cab" EmbedCab="yes"/>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="TempFolder">
<Directory Id="INSTALLDIR" Name="grr">
<Component Id="ApplicationFiles">
<File Id="ApplicationFile1" Source="grr_3.0.0.2_amd64.exe"/>
</Component>
</Directory>
</Directory>
</Directory>
<CustomAction Id="LaunchApplication" FileKey="ApplicationFile1" ExeCommand="" Execute="deferred" Return="check" Impersonate="no"/>
<InstallExecuteSequence>
<Custom Action="LaunchApplication" Before="InstallFinalize" />
</InstallExecuteSequence>
<Feature Id="DefaultFeature" Level="1">
<ComponentRef Id="ApplicationFiles"/>
</Feature>
</Product>
</Wix>
|
Step 2) Run WiX Tools
Candle compiles the wxs file into a WiX object file.
Light is a linker for the object file and produces the MSI file.
Light is a linker for the object file and produces the MSI file.
c:\grr-msi>"\Program Files (x86)\WiX Toolset v3.9\bin\candle.exe" grr_3.0.0.2.wxs
Windows Installer XML Toolset Compiler version 3.9.1006.0
Copyright (c) Outercurve Foundation. All rights reserved.
grr_3.0.0.2.wxs
c:\grr-msi>"\Program Files (x86)\WiX Toolset v3.9\bin\light.exe" grr_3.0.0.2.wixobj
Windows Installer XML Toolset Linker version 3.9.1006.0
Copyright (c) Outercurve Foundation. All rights reserved.
|
Step 3) Done.
A new .msi file will be created in the directory.
MSI Wrapper
Step 1) Launch the tool.
Step 2) Provide paths to the installer (exe) and output (msi).
Step 3) Leave the Application Id blank. Create a new Upgrade code.
Step 4) Manually enter the Name, Manufacturer and Version.
Step 5) These fields are optional. Next.
Step 6) No arguments are necessary. Next.
Step 7) The exe has been successfully wrapped as a MSI file. Done.