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

  • wixlib a shared archive of fragments (re usable only within wix toolset) (Votive Library / WiX Library template) - WiX Toolset team suggest preferred over MSM for use when only Wix Toolset is involved. Allows finer grained inclusion.
  • msm (todo) a shared installer database, merged into an msi as a single unit. (Votive Module / WiX Merge Module template)
  • msi a windows installer package (Votive Package / WiX Project template)
  • msp a windows patch package (Votive PatchCreation / no WiX template)
  • bundle a bootstrap application to execute multiple installation actions (Votive Bundle / WiX Bootstrapper template)

    See Votive Project Templates for comparison.

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