Bamse is a framework for building Windows Installers for
your Windows applications, giving you a comprehensive set
of features to put together MSIs using Haskell.
Bamse lets you author installer generators, i.e., applications
that will generate Windows Installers when invoked (and pointed
at the files and other resources to include for that particular
installer instance.) Bamse is also accessible as a library, letting
you integrate MSI creation into your codebase.
The package has a number of example templates showing how to
specify a generator; real examples that have been used to ship
software by a number of projects and companies. See the templates/
directory; one good way to get started is to modify one of these
to suit the needs of the installers you are looking to create.
For a worked example of how to build installers from your Cabal packages,
and possibly automatically install them when running the MSI, see examples/Cabal.hs
(and the README in that directory.)