We had been packaging one of our Windows WPF clients since 2010 using InstallShield LE. It was available as a free option for Visual Studio 2010 to create an MSI.
This had been problematic since we had continuous integration with MSBuild and CruiseControl.NET. There was not a nice way to produce that MSI as part of the integration. LE really does mean Limited Edition in this case.
In 2012 we implemented MakeMSI. The MakeMSI scripts have been used to build the MSI files on each Cruise Control build. We made a bat file that runs all the environment versions of the MSI files. The environments each have their own configuration (mm) file. The mm file includes the specific header of Mem.mmh. We customized three header files that determine the MSI properties: Mem.mmh which #include(s) Dept.mmh, which #include(s) Company.mmh. The ver files set the version.
Today I set up the same MSI builder using WiX. The Windows Installer XML (WiX, pronounced “wicks”), is a free software toolset that builds Windows Installer (MSI) packages from an XML document. It supports a command-line environment that developers may integrate into their build processes to build MSI and MSM setup packages. WiX was the first software released by Microsoft under an open-source license called Common Public License.
Evidently, since Visual Studio 2012, the traditional setup project type has been removed. WiX becomes a recommended option to create Windows Installer package.
I used dark.exe to reverse engineer my existing MSI created with MSI. With some tooling around, I created a better config file for candle.exe, the wxs file.
It took about two hours from start to finish. I found this book helpful in a couple of spots as a reference.
WiX 3.6: A Developer’s Guide to Windows Installer XML by Nick Ramirez