I thought the next installation package I would evaluate from the inside out would be the Windows Live Writer Tech Preview. However, before I got around to that, lots of noise was made about Google Chrome's release so I thought I'd pile on and dig in. As usual, I found a few interesting things.
Initiating the download.
First, the installation experience starts by downloading a pretty small bootstrap (474 KB) executable. A bootstrap executable like this is basically required for any distribution over the Internet so the only thing interesting here is that they did not to ship the product embedded in the initial bootstrap executable. Instead, the bootstrap executable contains the Google Updater and the applications to have the Google Updater download then install. Don't forget about the Updater, we'll come back to it at the end.
One important thing to note here is that the bootstrapper is specifically marked for no elevation (<requestedExecutionLevel level="asInvoker" />). That's good because it'd be less than ideal to be downloading from the Internet from an elevated process. What's more interesting though is that there is never an elevation prompt. This means that the Google Updater, Google Chrome and Google Gears are per-user installations. I am always interested in applications that choose to go per-user since there is always a reason behind the choice (usually to avoid a UAC prompt on Vista). ClickThrough installations are per-user and more spectacularly Live Mesh is per-user. I'll cover the details of per-user installations, why they are interesting and how they differ from per-machine installs in a future blog post.
Before going forward, going back to the very beginning, the EULA dialog is very tricky. I don't know if Google did this on purpose but notice the checkbox in the location where most installs say you must check to "Accept". It actually is the option to opt-in to sending all your usage data to Google. If a user wasn't paying close attention and was just clicking to get to the download they might opt-in to accidentally. Sneaky, if intentional.
Also, I kept looking for some place that explained that we were going to be getting the Google Updater and Google Gears with Google Chrome. Haven't found it.
Actually downloading and installing Google Chrome.
Next, the Google Updater installs itself and starts downloading Google Chrome and Google Gears. After downloading, Google Updater launches the installs for Google Chrome and Google Gears. The progress bar behavior is interesting to watch during this process. During the first initialization the progress bar enters "endless loop" mode (or "confused Cylon mode" for you BSG fans). When the download starts the progress bar fills the bar normally. Then the progress bar goes back to "endless loop" mode during the installation. That means there is no real progress during install itself.
At this point, Google Updater will have installed itself in the LocalAppDataFolder under Google\Update and pointed a HKCU\Software\Microsoft\Windows\CurrentVersion\Run key to start it on every boot. Google Chrome was installed by some opaque (presumably custom) engine using a 7-Zip package as for its data. Google Gears, however, was installed by an MSI. The MSI was created with the WiX toolset (older build) and tailored for the Chrome install location and marked to not show up in Add/Remove Programs itself. That means the Chrome uninstall is responsible for kicking off the package uninstall. The only real problem here is that the original source MSI is deleted after the installation is complete. That means should the Windows Installer require the original source for any reason, it'll be impossible for typical users to satisfy the source prompt. I am curious why Google chose to use MSI for installing Google Gears but used some other installation mechanism to setup the rest of Google Chrome.
While all of this custom stuff provides a very hands off installation experience for consumers, it doesn't play well with serious enterprise deployments. However, the fact that this is a per-user install means that individuals can probably get Google Chrome installed on their desktops without the Google Gears MSI install since even administrators may block it (the Windows Installer respects global Group Policy settings that can prevent all installations). Of course, it's possible (I'd dare say likely) that Google wouldn't rate enterprise deployment high on their list of priorities for Google Chrome.
First boot experience.
When the install is complete, Google Chrome launches and goes into a "first boot" experience to do let the user configure their settings and migrate any existing bookmarks. This is exactly the right thing to do. I see so many applications make the mistake of trying to do this type of work in setup its refreshing to see someone get it right. I'll go into more details about settings management in the future.
Google Chrome Uninstall FAIL.
To dissect the Google Chrome setup, I had to uninstall several times. On the first uninstall, I saw that Google Chrome's "User Data" directory was left behind. This is fine and, in many cases, desirable. If there is data in there that the user may want later, leaving the data around is the best choice. An option to clean up all the data during uninstall is also a good idea especially since this is a per-user app and it can correctly clean up the appropriate user data. No big deal but that did lead me to the beginning of the badness for Google Chrome's uninstall.
First, the prompt to uninstall is a bit goofy when it asks, "Are you sure you want to uninstall Google Chrome? (Was it something we said?)". Maybe the rhetorical question fits in with the comic book introduction and the cutesy Mac-like fail screens but it certainly doesn't feel very professional. Clicking OK causes the prompt to disappear but there is no indication that Google Chrome is being uninstalled until a short bit later a web browser window pops up navigated to a Google page asking why I uninstalled. The experience is disconnected even though the uninstall is pretty quick. The extra browser launch is also a bit annoying. I wonder what type of feedback they'll get there.
However, this next issue is huge. Uninstalling Google Chrome does not uninstall the Google Updater. That means that Google Updater will start up on every login (because it's still in the Run key) even though you don't have any Google stuff to update. Unless you manually run "%LOCALAPPDATA%\Google\Update\GoogleUpdate.exe --uninstall" before deleting everything in the Google directory, you'll be left with COM goo on the machine. The real problem is that there is no visible indication that the Google Updater is still on you machine.
Maybe this uninstall problem is just an oversight on Google's part but there is so much registration around the Google Updater that it is surprising it could be forgotten. It is especially important to clean it up because it wasn't really clear that you were getting the Google Updater when you just wanted the Google Chrome.
The initial installation experience didn't really impress me with its vague progress bars but overlooking the uninstall of the Google Updater really ruined my opinion of the overall Google Chrome setup experience. The clean per-user installation and appropriately timed migration experience doesn't outweigh the uninstall problem. If the uninstall just left some dormant files in a directory that'd be one thing but the Google Updater is left active on my machine after I uninstalled everything.
[9/13/2008 Update: It turns out that the Google Updater does uninstall eventually. Sorry, for any confusion or angst my incomplete analysis might have caused. I also added a few images since I didn't catch any the first time around.]