views:

268

answers:

3

There are lots of tools for creating installers on Windows (InstallShield, InnoSetup, NSIS, just to name a few). All tools I've seen fall in one or both of these categories

  • Point-and-click. Nice GUI for creating the installer, but the installer definition/project file can not be manually edited.
  • Textfile: No (official) GUI. The installer is compiled from a definition in a text-file which is manually edited.

The installers I'm building are all defined using a DSL (represented as YAML files), so using a GUI is out of the question, and creating is textfile is cumbersome although doable.

What I really would want is a tool which exposes a (complete) API, through which I can control the creation of the installer. Are there any such tools out there?

Edit: I'd love to hear about non-MSI based tools as well. MSI is not a requirement (rather the other way around...)

+6  A: 

Wix 3.0 beta has .NET support included for this purpose. I don't know how well it works but it includes documentation. It's a framework of types for manipulating the installation creation process and all that goodness, so I don't think you even need to write a line of WiX XML if you don't want to.

Jeff Yates
+1  A: 

WiX is a great tool, but you will have to do a lot of direct coding in order to make things happen. Fortunately the documentation is pretty good and there are several GUI tools, such as WixEdit on SourceForge to aid in the process.

Dillie-O
WiX 3.0 has a programming framework where you don't need to write the wix files. Check it out.
Jeff Yates
A: 

Well, there is the Windows Installer API which you could use to create MSI files directly, however I think you'd be better off using WiX.

The "direct coding" will be much less than dealing with the Windows Installer API directly, I'm guessing that's probably going too "low level" for what you need. Depending on what you're looking to do, you could use WiX to generate an MSI and then tweak that afterwards using the API.

What's wrong with generating XML? That's really going to be your simplest option... you won't need to manually edit it, just write your own code to generate the required XML from your DSL files and a few templates.

sascha
Generating XML is acceptable -- I can add my own functional layer on top. Generating a text-file a la NSIS (which is more of a programming language) is not so acceptable, since it is much more free form and I have to deal with quoting, etc.
JesperE