I started using Microsoft’s Visual C++ in 1993 when the 1.0 version came out; when version 1.5 was released, I was using it to develop products at a startup. One of the things that was interesting about VC++ then was the installer; compared to prior versions of the Microsoft tools, VC++ was a breeze to install. Visual C++ actually had an installer team; MSDN published an interview with the manager of the group. “The installation experience is very important.” They got it.
Fast-forward 15 years and installers are still important, but God damn it, they suck hard.
I’m not sure why this is. Correction, I have conflicting theories. The first is, most teams foist off the installer work to junior engineers; the kind of people who will actually believe that typing in 60 character case-sensitive unlock codes is a good thing. Then there are paranoid freaks who have the need to seal everything up behind product keys, feature enabler codes, license.txt files and (of course) physical dongles, just to get to the EULA. Put these two types in a room together and they’ll produce a Fort Knox-class installer for Notepad that nobody will be able to run. The transistor blows to protect the fuse; the software blows to protect product support.
Recently I had to download and install a package that had one of the craziest protection schemes I’ve ever seen. After clicking through the usual maze of agreements (“I accept” and “Okay fine, your company now owns my immortal soul”), the download page asked for the MAC address of my machine. Under separate cover, the site’s download manager emailed a license file that had to be placed into a very specific directory on my machine’s hard drive, whereupon the installer would run (instead of failing with messages like “00232-FATAL_LIC_NF”). The result? The installer unpacked a directory of source code. Obviously someone was told, “Protect this sample code at all costs,” and followed orders to the letter.
I promptly checked the stuff into source control. Problem solved. I wonder which corner of Hell I’m going to end up in?
Lucifer: “Listen up! Adulterers, follow the signs saying ‘Burning Tar Pits’. Money lenders and financial industry employees, you’re in the ‘Taco Bell’ line for the rest of eternity; pray you don’t reach the counter. And anyone who circumvented the spirit of a software license system –”
L: “… the Bubbling Acid Pits of Operating System Install Hell!.”
Me: “Wait, what about my other sins? Pride? Greed? And shit, I thought a lot about killing the guy who wrote the driver framework for –”
L (smiles evilly): “We’re gonna put you right next to Richard Stallman.”
Let us not talk about the installs from hell, where you hunt high and low for the 5996-qr3b-patch09_6_51a_.32 (but not 5996-qr3b-patch09_6_52b_.31). Eventually you find it buried on some web site (behind three username/password doors, each with different and conflicting rules for required and allowed password characters), start the download (apparently through a submarine line laid to the Antarctic and back, via the Panama canal) and discover that what you’ve downloaded is actually just a download manager for the next stage of the process. Which involves a physical trip to Sandusky, Ohio to prostrate yourself in the lobby of LoserSoft with a suitcase of cash and beg abjectly for a download key, followed by self-immolation. Gotta read the goddamn fine print on the EULA.
There was the memorable piece of Macintosh software that involved nearly fifty swaps of seven floppy disks. It. Took. A. While.
You want to know what my idea of the perfect installer is? A copy, from point A to point B. From the distribution disk (or a zip file) to some directory of my choosing. It used to be that a lot of Macintosh software worked this way (I don’t know if this practice continues). I know that most Window programs do not (don’t get me started on registry entries and use of complexified XML as a glorified substitute for .INI files).
Somewhere in this galaxy an advanced civilization has discovered the solution to all of this, and they are happily flitting around and not telling us what it is. But I suspect the reason we haven’t seen them is that their fleet of hyperdrive saucers is grounded until they discover how to install 5996-qr3b-patch09_6_51A_.33 (“Oh, Qualtar, I think that’s supposed to be a capital groknard, not a lower-case one…”)