Chrome, Installers, and NSIS

Good news on Chrome this week. We released our 0.7 versions of the product, and they seem to be doing really well in the field. Many of the wierd stability problems are gone. There have been a few minor bugs to fix. We’re so lucky to have users that are patient and helpful. They’ve been just wonderful at helping us get the product to work.

OK – about installers. So far, we’ve used the Microsoft Installer to build our packages. Its been pretty nice. The way the Microsoft Installer works is that most of the program is resident in Windows already. Windows XP, for instance, ships with a version of the Microsoft Installer Service 2.0 built in. Whenever you launch a MSI file, its really the built-in installer service which is doing the work. The contents of the MSI file is basically a big database. Microsoft internally calls the database “Orca”. The Microsoft Installer software knows how to read this database and act appropriately. I have found that there is a tool (its in the developer’s SDK) for Orca which is worth downloading if you spend much time with an MSI.

For simple installs, MSI’s are great. but I’ve found they have a number of drawbacks for us:
1. Installation is slow. Our 2MB application takes about 30 seconds to install. Why?
2. Upgrading existing software is tricky. You have to get a whole bunch of options right in visual studio for this to work. I ran into one bug which is that because my product is versioned “0.70.0”, upgrades just don’t work. Turns out (if you install the Orca database tool) that there is a rule which gets auto-generated to upgrade my version from a minimum version of 1.0.0.0 to a maximum of 0.70.0. Well, of course that won’t work – my version is below 1! I think its just a bug, but I wrestled with that forever.
3. Some customers are reporting this really wierd error which says the MSI file is corrupt. Its intermittent, and only some users see it. But its happening at a rate thats high enough that I don’t believe its corrupt downloads. Searching the net for these errors, you’ll find zillions of other people with the same problem.

Solution: Use a different installer. I found NSIS (from NullSoft, the makers of WinAmp), which I like. You definitely don’t get any of the gravy that comes along with a Visual Studio-like environment. Scripting NSIS is back to unix-land. I saw there are some visual script editors for NSIS available, but I didn’t try them. It took me a good couple of days to really cleanup the installer, but in the end it was worth it for reasons I hadn’t originally anticipated:
– The size of my download decreased from 1.25MB to 0.65MB. I don’t know what MSI’s are doing, but they are just too big. Its the same files in each, but NSIS is able to make downloads HALF the size.
– Install is amazingly quick.
– Uninstall is amazingly quick.
– You get full control over what happens on install, uninstall, upgrade, etc. There is no “behind the scenes” magic. Of course, this is a blessing and a curse.
– You get to customize the graphics in a much nicer way.

So, I recommend NSIS to anyone looking for a nice installer.

There are some features which you loose when moving away from MSIs. For instance, MSIs come in with built-in administrative controls which allow IT folks to determine which applications the end user can install. I’m not sure how that all works, but I suspect the MSI is spending a lot of time figuring that out.