ISWIX, LLC View Christopher Painter's profile on LinkedIn profile for Christopher Painter at Stack Overflow, Q&A for professional and enthusiast programmers

Monday, April 16, 2007

Googling for Windows Installer: New Twist

A thread over on InstallShield Community recently revealed that InstallShield 12 recently started setting the SummaryInformation stream Last Modified property to "DavidHacker". DavidH then explained that a file used by InstallShield to perform the build was last modified by him and that this behavior would be addressed in a future release. Ok, that's funny and somewhat embarrassing. I was going to post this blog just to give David a gentle poke but then something else became quite a bit more interesting.

It all started in fun when I decided to Google for "davidhacker msi" and I got 137 hits that were basically all MSI downloads. But then I made a wrong turn at Albuquerque turn when I started wondering just how many MSIs I could find. A quick examination of a blank MSI database created in ORCA made me try this search:

"S u m m a r y I n f o r m a t i o n" Installation Database root entry Install MSI { }

Wow, 48,500 hits!

Then it got interesting. I decided to add filter the query with additional words like:

InstallShield - 10,100 hits
Candle/Light - 12,200 hits
WISE - 71 hits
InstallAware - 1 hit

Now I have to realize that I was quite a bit surprised that WiX had more hits then InstallShield until I took into consideration that large corporate applications are likely to have the budget to use installshield and small projects are not likely to have the funding and will turn to open source/low cost solutions. At the same time, these large company apps are not nearly as likely as the small company apps to be available for download on the web. But come WISE only had 71 hits?? And of course our friends at InstallAware.... well 'nuff said.

Then I realized that I had a very powerful tool in my hands. I could download thousands of MSIs to use for data mining in determining industry trends. The first trend I decided to look at was the `Dialogs are optional in WiX trend`. I wondered if perhaps I was too hard on WiX the other day. To decide I downloaded the first 10 hits that Google returned:

images.windowsmarketplace.com/img/EDT/tools/UpgradeOptionsTool.msi
gmamaladze.googlepages.com/OutlookTasks.msi
www.eep.ac.uk/content/EEPSearchDeskBar.msi
software.jessies.org/downloads/windows/scm.msi
software.jessies.org/downloads/windows/terminator.msi
desktop.google.de/url?q=http%3A%2Fplugins%2Fgooglevideo.msi
desktop.google.fr/url?q=http%3A%2Fplugins%2Fhoroscope.msi
www.whitworth.org/downloads/SQLQueryGrid_1_000/SqlQueryGrid_1_000.msi
pluginplace.googlepages.com/gdSkype.msi
blogs.msdn.com/heaths/attachment/1472048.ashx

Of note the package sizes were:
MIN: 48KB
MAX: 2431KB
MEDIAN: 130KB
AVERAGE: 602KB

Of the 10 packages, not one single package ( not even the one that happened to be from Heaths MSDN blog ) had a dialog table. 100% of the packages lacked a UI experience for the user.

Now I didn't make this up. You can use my search query, do your own 10 downloads and look at the MSIs in ORCA. But I do have a good explanation for why this is happening.

This page is the number one Google hit for the term `WiX sample`. On that page is a simple definition of the wix product, package, media, directory, component, and file elements followed by a call to candle and msiexec.

So thousands of developers who don't know basic setup best practices who think setup is `simple` and setup is `xcopy` are basically told that they are correct.

Another interesting pattern I see is when I do stumble across an MSI created by WiX that has dialogs, it is quite obvious that the dialogs were STOLEN from an InstallShield project as you'll see ControlConditions that use variables like _IsSetupTypeMin. I've seen this mentioned in WiX mailing lists but I never realized just the extent that people were doing this.

No comments:

Post a Comment