Simple MSI or MSI-ish installation solution for Windows

I've recently had to make an installer for application that I wrote for my job, and it sucked. I used the Qt Installer Framework, and I had to hack together the option to overwrite an existing installation. The kicker is that it seems I was the first person to solve this problem and post a workaround for it on the internet. This is the same installer framework the Qt framework uses mind you... I never want to deal with this again.

I have looked at other installer solutions, and they all seem so complicated. Yes, a lot of the time people in the handmade community can just throw around zips and call it a day, but non-developers expect installers, and I often need to produce one.

What do you guys use to make installers for Windows? I've looked at what needs to happen in terms of the registry, and it doesn't seem as complicated as the internet makes it out to be. If I can't find a reasonable one, I will probably be writing Handmade Installer. I'd also like to hear about what you guys are doing for things that go along with installation, like signing executables.

Edited by Blake Martin on
NSIS imho is the best. It was created originally for Winamp, but nowadays many other software uses it. It is very small and easy to use. Only disadvantage is a bit ugly scripting language.

Inno Setup is next best alternative. Very user friendly, and very extensible with custom scripting (if needed).
NSIS was the first thing I looked at, and the custom crappy scripting language was enough to turn me off of it. I'll take a look at the other one.
I feel that installers suffer from the same issues as build systems. People set them up once and once it works don't ever touch it again and just deal with some manual work. This unfortunately means that quick hacks are more likely to get embedded as features with all the tech debt involved.

And at the same time very little documentation exist on what installers do/need to do to actually install a program and linking file-types extensions to your program.
So far, Inno Setup is looking okay. I'm not too impressed by their choice of scripting language, but it's whatever. I like it's little debugger.

When Jai comes out, we need an Install.jai, though, b/c there's no reason why I shouldn't be able to have the installer logic in my Jai program along with my build info. There should just be an installer target along with debug/release that will build and wrap the result in an installer.

Edited by Blake Martin on
I found this documentation by coincidence on MSDN, and that's why I asked the question. It doesn't _seem_ like there is too much involved. All I want to do is install stuff in such a way that my program is listed as installed, windows knows where the uninstaller is, and I can setup shortcuts, start menu stuff, etc. Everything else I can implement manually.