Most Unix developers, once faced with this, will almost immediately blurt out something like "Why can't I just do DESTDIR=c:\some\path ninja install and have it make an installer out of the result?" So I created a script that does exactly that.
The basic usage is simple. First you do a staged install into some directory and create a JSON file describing the installation that would look like this:
{
"update_guid": "YOUR-GUID-HERE",
"version": "1.0.0",
"product_name": "Product name here",
"manufacturer": "Your organization's name here",
"name": "Name of product here",
"name_base": "myprog",
"comments": "A comment describing the program",
"installdir": "MyProg",
"license_file": "License.rtf",
"parts": [
{"id": "MainProgram",
"title": "Program name",
"description": "The MyProg program",
"absent": "disallow",
"staged_dir": "staging"
}
]
}
Running the script would then create a standalone MSI installer with the contents of the staging directory.
Multiple components in one installer
Some programs ship with multiple parts that the user can choose whether to install each part. This is supported by the script. First you must split the files in multiple staging directories, one per component and then add entries to the parts array. See the repository for an example.