Microsoft

Resolve compatibility issues with QFixApp and the Compatibility Administration Tool

Two Microsoft utilities, the Compatibility Administration Tool and QFixApp, can solve most application compatibility issues in Windows XP. Scott Lowe explains how to use them to create fixes and roll them out to your other Windows XP machines.


Microsoft’s Compatibility Administration Tool (CAT) is a new utility that lets you identify and fix potential compatibility problems with applications running under Windows XP. You can use the tool to identify the particular fixes that help Windows XP support incompatible applications, package the appropriate fixes, and roll them out to other Windows XP systems. I’ll describe how to use CAT in conjunction with one of the Application Compatibility Toolkit’s primary tools, QFixApp—the Quick Fix Application—to fix specific compatibility problems on individual machines.

Installing and running the tools
The first step in correcting an application compatibility issue under Windows XP is to install the Application Compatibility Toolkit. While a version of the toolkit program is available on the Windows XP CD-ROM, Microsoft has released version 2.6 since the release of Windows XP. This version, which is available for download from Microsoft, is markedly different from the original version distributed with Windows XP. For this article, I’ll be using this updated toolkit. To install this new version of the toolkit, download it from Microsoft, execute it, and accept all of the defaults.

QFixApp offers predefined fixes
Once you've installed the toolkit, you can run the QFixApp utility from C:\Program Files\Windows Application Compatibility Toolkit\applications\qfixapp.exe (Figure A). Older versions of the tool placed this utility on the Start Menu, but Microsoft chose not to put it there for this release.

Figure A
The QFixApp user interface


QFixApp includes a number of predefined fixes to address problems commonly encountered by certain types of software. For example, because Windows 95 is not a multiuser operating system and provides very little in the way of system security, certain software packages that ran well under it have trouble running in the Limited User Access (LUA) space provided by Windows XP. Therefore, you can use QFixApp to give a malfunctioning program temporary access so it will run properly. Table A lists the prepackaged fixes available on the Layers tab in QFixApp.
Table A
Layer Description of fix
256Color This forces 8-bit color only and disables theme support.
640x480 When the application starts, the resolution changes to 640 x 480.
DisableThemes This temporarily disables the Windows XP theme functionality for the application.
International Windows XP requires a character set to be specified in order to display localized characters rather than using the method employed by Windows 9x. This fix allows the application to use the Windows 9x method to choose a character set. This layer is mainly used for Far East character sets.
LUA This redirects files and registry keys to appropriate, secure locations when attempts are made by an application to write information to an inappropriate area.
LUACleanup The counterpart to LUA, this fix removes the files that were redirected as a result of the LUA fix.
NT4SP5 This allows an application to think that it is running on a Windows NT 4 SP5 machine.
ProfilesSetup Since Windows 95, 98, and Me are single user operating systems, once an application is installed, anyone using the computer can run it. Windows XP, as a multiuser operating system does not allow this. This fix allows an application installed to be available to all users rather than just the user that installed the application.
Win2000 This emulates Windows 2000 and returns Windows 2000 version information when requested.
Win95 This contains dozens of fixes to make the system appear as a Windows 95 system to the application.
Win98 This contains dozens of fixes to make the system appear as a Windows 98 system to the application.
QFixApp prepackaged fixes

Using QFixApp
The real power of QFixApp comes when you have problems running an application. CAT comes with a sample application that I’ll use for this example. Running C:\Program Files\Windows Application Compatibility Toolkit\demoapp\demoapp.exe starts the sample application and immediately generates an error indicating that the program in question must only be run on Windows 95 or 98. Most applications that are only supposed to run under one of these operating systems can be made to run under Windows XP as well. The error message indicates that the program has asked Windows to report back its version. The error occurred because Windows didn’t respond as the application required. To correct this, you need to force Windows to respond to this older version request.

To fix this sample problem, I’ll use QFixApp to force Windows XP to respond as Windows 98 when asked by this application. The steps are:
  1. Start QFixApp.
  2. Click the Browse button and browse the system until you locate the executable file for the app in question. In the case of the sample application, the path is the demoapp path listed above.
  3. Click on the appropriate compatibility layer, in this case the Win98 Layer fix, and click Run. The application will now run without generating this error. Other errors will be generated, but that’s a function of the demo program, and those errors can also be corrected.
  4. Click Create Fix Support to write the fix to the system compatibility database. The next time you run this application, you won’t get the error since the fixes generated by QFixApp will be loaded when the application is started.
  5. If you click the View Log button in QFixApp to view the QFixApp log file, you’ll see that it lists an entry each time one of the fixes included in the layer had to be called (Figure B).

Figure B


As you may be able to tell from this example, QFixApp is an extremely powerful utility that can make almost any Windows program function under Windows XP. A lot of trial and error will go into the process, but QFixApp can increase your XP functionality.

Multiple distributions with the Compatibility Administration Tool
One major drawback of QFixApp is its single-machine nature. The changes you make in QFixApp apply only to the machine on which QFixApp is running. But what happens if you have hundreds of machines that need fixes for your applications? This is where CAT comes into play. You access this utility from Start | All Programs | Windows Application Compatibility Toolkit | Compatibility Administrator.

A fix for every program
The latest version of the Compatibility Administration Tool (CAT) includes hundreds of fixes for almost any program. Are you having trouble running the 102 Dalmatians Activity Center under Windows XP? No problem! This utility has a fix for it. In fact, as of this writing, version 2.6 of CAT includes fixes for 1,688 programs.

The databases
CAT works on the concept of databases (Table B). In the left-hand side of the window are a number of options—System Database, Installed Databases, Per User Compatibility Settings, and Custom Databases.
Table B
System Database This database includes all of the available fixes in the Compatibility Administrator that can be added to a database.
Installed Databases These are databases that are currently installed and in use on the system. In other words, fixes are currently in effect.
Per User Compatibility Settings Windows XP includes a compatibility setting for each executable that allows the user to make modifications on the fly without having to use QFixApp. These settings are listed in this area.
Custom Databases A custom database can be created to allow you an easy way to migrate compatibility settings between systems.

Suppose you’ve used QFixApp to create a number of fixes for your Windows XP session. Now you want to roll these fixes out to other Windows XP machines without having to do a lot of extra work. CAT can do it for you. As an example, I’ll show you how to roll out the fixes for the sample application, as well as WordPerfect 8, to another Windows XP machine.

To begin, you need to create the database for these fixes. To do this, start CAT and take a look under Custom Databases (Figure C). You should see a new, untitled database.

Figure C


My fix for the sample application currently resides under Installed Databases (Figure D).

Figure D
The demoapp.exe file appears under the list of installed databases.


To copy this fix into the custom database, right-click Applications under demoapp.exe custom database and choose Copy. Next, right-click the New Database entry and choose Paste. You’ll see the entry appear in the database.

To copy the fix for WordPerfect 8, expand System Database | Applications and scroll down the list until you find WordPerfect 8. Again, right-click the application entry and paste it into the custom database. When you’re done, you should see two entries under Applications in the custom database (Figure E).

Figure E
Both entries now appear in the custom database.


The next steps involve renaming and saving the database. I like to rename databases with something more logical than “New Database(1).” So, for this example, I’ll right-click the new database, choose Rename, and name it “Sample and WordPerfect.” To save the database, click it and choose Save from the toolbar. I’ve named the database file the same as the database inside the file.

Machine preparation
To prepare the remote machines for the new database, you need to run the utility named C:\Program Files\Windows Application Compatibility Toolkit\Redist\act-pkg.exe. The act-pkg.exe file will update the remote system with the latest application compatibility information, which is essential to the proper operation of the tool. Some ways to perform this update without having to visit each workstation are:
  • Running it from a log on script
  • Running it using Group Policies
  • Ghosting
  • SMS

Once you’ve installed act-pkg, you need to put the database in a place where the new system can read it. I recommend placing it on a network volume and installing it from there rather than copying it to a local machine.

The final step in the process is to install the database to the remote machine. Again, I recommend handling this with a script or another automated method rather than visiting each individual machine. In my example, I have a server named slowe-p on which I’ve saved the database in a folder named c:\appfixes.

On the remote system, you need to install and register the database using the sdbinst.exe utility, which is found in Windows XP. For this example, to install my custom database, I used the following command from the Windows XP command prompt on the remote machine.
C:\>sdbinst "\\slowe-p\c$\appfixes\sample and wordperfect.sdb"

I’ve the put the command in quotes due to the spaces in the database file name.

When completed, a message indicates the process worked (Figure F). Now, when I run WordPerfect or the sample application on the remote machine, all of the fixes present on my original system will be loaded for that system as well.

Figure F


More than just an application fixer
In addition to simply fixing problems, you can use CAT to create processes that require users to visit a Web site when an application is launched or display messages that pop up when an application is run. You can learn about some of CAT's features by visiting the Microsoft Knowledge Base Web site.

 

Editor's Picks