Don’t Rename that MSI

The installer for the Apollo alpha release was made available, for Windows, as an MSI file. MSI files are the native format of the Windows Installer service. They’re essentially a single-file database containing the data required to install (and uninstall) an application.

It turns out that offering your installer download as an MSI file isn’t a terribly good idea. Unfortunately, we didn’t discover this until it was too late for the alpha release.

The first half of the problem arises because Windows Installer remembers the name of an MSI file when an application is installed, and it requires that subsequent installations of the same product use the same file name. (Windows Installer considers two products to be the “same” if the MSI file for both contain the same product GUID.)

The second half of the problem is your browser, which likely has a habit of renaming files that you download. For example, if you download the same file twice, it might helpfully append “(2)” to your second download to avoid overwriting the first.

Taken together, these two behaviors can make it surprisingly likely that you try to install the same product twice from MSI files with different names. If you trace the behavior of Windows Installer when attempting to open the second MSI file, you’ll find that it starts by correctly opening the second file, regardless of its name. Later, however, it will try to re-open that file using the original name.

This behavior doesn’t seem to be well documented, although I have found a reference in this Windows Installer Team Blog entry–look for Rule #14. I’m hard-pressed to argue that it’s not a bug, but maybe there’s a good reason for it that I just haven’t thought of yet.

Unfortunately, all of this can make Apollo’s installation experience look lousy. For example, see this blog about installing Apollo.

We’ve addressed all of this in the upcoming beta release by making the installer download for Windows an executable. It still contains an embedded MSI file and uses Windows Installer, but no one–not you, and not your browser–has the chance to give that MSI file the wrong name. Plus, it’s now got a nifty UI!