I'm talking about installing programs on Windows 7, not installing Windows 7 itself. Keep in mind that the Windows 7 family includes both the Windows 7 client desktop and Windows Server 2008 R2.
Some programs will not install on Windows 7 even though they'll run just fine without any problems whatsoever. When an msi file has a LaunchCondition that excludes Windows 7, the installation will fail. Here's an example of a LaunchCondition that prevents an application from being installed on Windows 7:
(VersionNT = 501 And ServicePackLevel > 1) or (VersionNT = 502) or (VersionNT = 600)
This can easily be fixed by using Orca, a free utility from Microsoft. Orca is part of the Windows SDK. You can download and install the entire Windows SDK for Windows Server 2008 and .NET Framework 3.5 iso (1.3 GB) from Microsoft or just Orca (1.8 MB) from Softpedia. If you download the SDK, you only need to install the Win32 Developer Tools part of it. Within C:\Program Files\Microsoft SDKs\Windows\...\Bin, find Orca.msi and install it. Although Orca is an application that is installed, it can also work as a portable application. After installing Orca, I was able to copy the Orca files to a USB memory stick and run Orca without installing it. It's part of my DBA toolkit on a stick that I wrote about previously.
To edit an msi file using Orca, you'll need to Run as administrator on Vista, 2008, and Windows 7. Select the LaunchCondition in the left pane and then select the problematic condition in the right pane. Notice that you have two options for implementing a workaround:
1. Delete the condition altogether (Right-click the condition and select Drop Row).
2. Edit the condition (set focus to the cell and edit the text of the Condition).
In this example, either of these corrections allows the installer to succeed on Windows 7:
(VersionNT = 501 And ServicePackLevel > 1) or (VersionNT = 502) or (VersionNT = 600) or (VersionNT = 601)
(VersionNT = 501 And ServicePackLevel > 1) or (VersionNT = 502) or (VersionNT >= 600)
If you are editing an msi that is deployed to customers, it's best to specify which versions of Windows that you know will work. If you want to leave things open ended, you can switch the = to >= as shown in the second example. If you're just doing some quick testing of Windows 7, I recommend simply dropping the row.
After completing your edits, save your changes and then exit Orca. The edited msi file is now ready to be successfully run in the Windows 7.