WiX Plugin
The Windows Installer XML (WiX) is a toolset that builds Windows installation packages from XML source code. The toolset supports a command line environment that developers may integrate into their build processes to build MSI/MSP setup packages, related intermediate MSM, wixlib and associated content MST, wixmst, wixpdb.
The goal of this plugin is to provide an installer build lifecycle that extends beyond that provided in default MSVS Votive. This includes
- managing dependencies - platform and locale aware with installer dependencies, also working with jar and nar. (future npanday)
- finding source and resources in standard locations without the need for configuring.
- using the well known maven phases to provide points where additional actions can be taken such as signing.
- inscribing cab details on msi
- detach the bundle app for processing and attach the bundle app
- creating transforms, and optionally embedding into a multi lingual installer for automatic selection.
- creating patches
The plugin has been developed and tested with WiX version 3.6 and 3.7. It should also work with other versions of WiX, the wix toolset is defined as a dependent artifact.
The integration tests for this plugin are (will be) based on the excellent tutorial at http://www.tramontana.co.hu/wix/.
Lifecycle Overview
Wix custom actions are not included as a lifecycle for building in this plugin.
Native C++ doesn't not require additional build steps - suggest NAR build. DotNet managed does require an additional build step of running MakeSfxCA.exe this would be a seperate plugin to add to, such as to the NPanday lifecycle for library.
Goals Overview
The WiX plugin has several goals:
- wix:validate
- wix:toolset unpacks the wix toolset to the target folder or configured location
- wix:unpack-dependencies unpacks the project dependencies from the repository to a defined location (for NAR and wixlib)
- wix:candle compiles WiX XML source (.wxs) file into a WiX Object (.wixobj) file.
- wix:lit archives WiX Object (.wixobj) file(s) into re usable library modules (.wixlib file).
- wix:light links WiX Object (.wixobj), WiX library (.wixlib) and source files into an installation package (.msi/.exe file) or patch module(.wixmsp) and (.wixpdb).
- wix:patch run torch to diff 2 versions of installers package (either .msi or .wixpdb) creating transofmr (.wixmst) and links with patch module (.wixmsp) using pyro
- wix:transform run torch to generate language based difference (.mst) between a base and localized msi
- wix:smoke run the ICE validation, to support separate reporting from compiling
- wix:inscribe capture the signatures of external cabs and update the installer database
- wix:detach-bundle detach the installer bundle executable so that it can be signed
- wix:attach-bundle attach an installer bundle executable
- wix:prepare-package (todo) attaches meta information about the build.
- wix:package attaches the classified artifacts based on configuration
Usage
Instructions on how to use the WiX plugin goals: