Jerry's Incoherent Babbling

Can’t install that MSI on your OS? Orca to the rescue!

Defining the problem space

If you are a Vista tester or packager, or even a developer that runs a server OS as your primary machine (like Windows Server 2003 or Longhorn server), you have probably come across software that is “blocked” on your OS. You’ll start the install by running setup or double-clicking the MSI file and it will say something stupid like this:

Or maybe this:

Or even this:

Sometimes you have to wonder about these folks logic skills; in that Cisco one, did anyone catch that it “requires Windows 2000 Service Pack 3 or greater AND Windows XP Service Pack 1 or greater”.  This would reduce to something like this in pseudo code:

If ((OS is Win2000) AND (SP Level is >= SP3)) AND ((OS is WinXP) AND (SP Level is >= SP1)) THEN INSTALL.

How exactly are we supposed to be running both OS’es at the same time? I hope the person writing the text strings isn’t the same dev that writes any of the logic in the application!

Anyway, those first two were applications that were blocked for no good reason on Windows Server 2003 (since Windows Server 2003 is a superset of Windows XP, all software that runs on Windows XP should be able to run on Windows Server). Other things that are blocked on Windows 2003 server for no good reason are things like HP Scanner software. The third bitmap is from some Cisco software that implements version checking incorrectly in their MSI file.

The good news? All of these can be “fixed” using Orca!

So what’s this Orca thing?

An Orca is a killer whale. Oh wait, – in the context of this article, Orca is a bare-bones,  no frills MSI database editor. That’s right, a Windows Installer file (MSI) is a database of things like actions, files to install, registry entries, and, most importantly for what we are trying to achieve here, Launch Conditions. Launch Conditions tell Windows Installer what requirements a machine must meet before the software will be allowed to install. It’s what drove all three of those annoying “I’m not going to install, neener neener neener” boxes above.

To get Orca from Microsoft, follow the instructions here: Getting Orca. Once you have Orca installed you will need to get your hands on the MSI file that you need to edit. Sometimes these are packed inside of a monstrously large self-extracting EXE file named “setup.exe” or “install.exe”. Often you can run these with a parameter like “/X” or “/Extract” or “/C c:\files” or something to get the MSI file extracted. Other times, just run the EXE and when the error telling you that you have the wrong OS appears, go to your temp folder and grab the files from there (often times they are in a funny named folder under temp like IPX0001.tmp or something like this). Save off the contents of that folder before you click OK to the dialog box.

Now that you have the MSI, file open it in Orca. The UI will show the “Tables” on the left side. For this task, we want the “LaunchCondition” table as shown here:

Notice that the condition is set to “VersionNT = 501 OR VersionNT > 502”. This means “If the version is WindowsXP or the version is greater than Windows Server 2003, then install”. This was Microsoft’s way of saying only run on Windows XP or Vista. To make it run on Windows 2003 server, it was just a matter of making this say the following:

After this simple change, just click Save and now it will install on Windows XP or greater. By the way, Windows XP is version 5.1.2600 and Windows Server 2003 is 5.2.3790, while Windows Vista Beta 2 is 6.0.5384. I’m not sure why in Windows Installer 5.1.2600 = 501 and 5.2.3790 = 502.

Here’s the Cisco one:

Notice that they have a more complex set of rules including a Pentium 3 or greater and 120 MB of RAM or greater. The salient section for us is this one:

(VersionNT=501 And WindowsBuild>=2264 And ServicePackLevel >=1) OR (VersionNT=500 And WindowsBuild=2195 And ServicePackLevel>=3)

As you can see, unlike the person who came up with the string error message suggesting that we needed to be running Windows 2000 and Windows XP at the same time, the person who did the logic here got most of it right. It requires the production version of Windows 2000 (VersionNT=500, with the build 2195 and the SP3 or greater) OR Windows XP Beta version or greater with SP1 or greater. (The production build of Windows XP is 2600, so where they got the 2264 had to be a beta release – at least they got the >= in there to cover it). To fix this one, we could either add another OR line with something like this OR (VersionNT=600) which would get it running on Vista for now, or we could just replace the whole line with something like this VersionNT >= 500 and forget the service packs since for our testing we won’t be running SP0 of Windows XP or SP2 or older of Windows 2000.

So why doesn’t the software work?

All the work we have done so far is to remove “stupid” blocks that are there for no reason or are there only because the software hasn’t been tested on a particular platform. None of our work guarantees that an application will actually work on Vista or Windows 2003 server. Many times they do work, but sometimes they will fail. Also, sometimes the vendor will have coded an OS version check right into the exe file that makes up the main program. You may need to setup the “Version Lie” shim using the Application Compatibility ToolKit (ACT) or by right-clicking on the EXE and setting it to run it as if it was Windows XP SP2. If this still fails, then the application probably isn’t going to run on your particular OS. Time to call the vendor and ask for a version that does work. However, if it works then you’ve just “fixed” the vendor install! Note that the vendor actually supporting the software on your platform is a different animal.


Posted May 30 2006, 07:01 AM by Jerry

Follow Me on Twitter

Did you enjoy this article? If yes, then subscribe to our RSS 2.0 feed or

Comments

Jeff wrote re: Can’t install that MSI on your OS? Orca to the rescue!
on 05-30-2006 8:22 AM
Jerry - Orca is our friend.  In fact, I use the word Orca as a verb... as in "hey, if it doesn't work - Orca it!"  Seriously, that's how I got VMware WS working inside Vista for the longest time.  Nice article.  The more people that discover this tool the better.
Windows is a registered trademark of Microsoft Corporation.
Powered by Community Server (Non-Commercial Edition), by Telligent Systems Themed By nb development