Windows Installer sucks

While I'm waiting for the umpteenth time for the installation of Windows SDK - one of the more poorly written installers recently to come out of Microsoft - I'd like to carp a bit about Windows Installer.

Ever since Microsoft started forcing MSI installation down everyone's throats, program installation has just begun to take... forever.

The bad thing about Windows Installer is that installation programs written for it... are not programs.

They are databases.

It used to be that installation would consist of a program executing and taking a few simple steps to install your software, then do the reverse on uninstallation.

That's not how Windows Installer works. Instead of running a program to simply install and let it be done with, it examines the state of your system, then examines the state of the database that is the program's installer, then does a series of overcomplicated calculations about how to reconcile the two.

It seems that, instead of running an installation script, it goes about solving a traveling salesman problem. Which is why it runs so slow. Or at least, that's my impression.

Microsoft apparently thinks that Windows Installer is some immense improvement on the state of the world. Apparently, all kinds of idiot programmers were writing bad installers before MSI - programs that didn't properly take everything into account, botched the installation, botched the uninstallation... it was a nightmare. Windows Installer was supposed to solve this.

Except, it didn't. Writing an installation database for Windows Installer is no less tricky than writing an independent program that performs the installation right. In fact - it's trickier. In your own installation program, you can fix things. When Windows Installer does something wrong, on some platform, somewhere - that's much harder. Windows Installer is a more inconsistent, less reliable, less flexible platform, than Windows itself.

So we used to have unreliable installers, but now, thanks to Windows Installer, we have unreliable and god damn slow installers.



Reto said…
Agreed, I always look for non MSI installers. It's also nice to find a boatload of Programs that you now cannot uninstall because the .MSI file has been moved/deleted. FUN.
x said…
You said it, Brother. I had a project where it took 10 minutes just to get the thing to come up. I had to convert it all to a script-based installer. If your project gets big enough, Windows Installer stops working altogether.

Don't even get me started on the stupidity of prerequisites.

Is there a movement where a reasonable technology is being provided as an alternative?
denis bider said…
Lots of people and projects use the NullSoft Installer System, which I believe is pretty good.

We have our own installer library in C++, and our own general-purpose uninstaller.

Our software installs vastly faster than the vast majority of installers that use MSI. Problems are largely nonexistent, and when they do happen, we can actually fix them reliably because we have full control of the code.
John Byrd said…
Two words: Inno Setup.
commenter said…
Agreed. Just pissed away a full day looking at various MS installer progress bars.
Robin J. said…
One acronym/four words: RPM/Red Hat Package Manager.

Popular posts from this blog

Redditors with absolute powers

When monospace fonts aren't: The Unicode character width nightmare

"Unreachable" beauty standards