Wix is an installer toolset that allows you to create your own installers for your products. It utilizes the default, Microsoft endorsed and recommended MSI method of installing components (files, registry keys, shortcuts, anything really). The cool bit is that it’s quite easily set up and with some pre-build events in Visual Studio you can easily automatically determine which files need to be included in your installer. Ever since Microsoft deprecated setup projects in Visual Studio, they themselves have started using Wix.
Just look at the Visual Studio 2015 installer; quite a beautiful and simple example of a good installer in my book. But! There’s a catch. It doesn’t obviously use default MSI user interfaces; it uses a custom bootstrapper application that Microsoft has written.
Custom bootstrapper applications are bundled with the installer. You can set up your installer bundle to include your custom application and then Wix will basically start up your application instead of their default Wix Bootstrapper and pass along information and events.
The Wix documentation on how to build such an application is quite..light. Luckily a very fine person has written a complete series on how to set up a custom .NET based bootstrapper application.
Have a look at John M. Wright’s series about how to write your own custom bootstrapper application for Wix, it’s absolutely fantastic and has helped me through some dark times when implementing this at work. It really guides through everything you need to know but doesn’t do too much handholding – this allows you to actually start getting to know how the Wix bootstrappers work which in turn will allow you to build in features not covered by the series.