The Program Compatibility Wizard and Shell Extensions facilitate remediation of minor compatibility issues; however, their functionality and applicability in an enterprise environment is rather limited. Fortunately, Microsoft provides another, more advanced and powerful, technology in the form of Windows Application Compatibility Toolkit (currently at version 3.0). The toolkit, which can be installed on Windows 2000 SP3 or later, Windows XP, and Windows 2003 Server, consists of documentation and tools to assist with designing, deploying, and supporting applications.
It is divided into three main components:
- Application Compatibility Analyzer is geared toward system administrators. It assists with inventorying applications and verifying their compatibility against an online database. The command-line Collector (COLLECTOR.EXE) handles the actual inventory part, and the GUI-based Analyzer (ANALYZER.EXE) takes care of the verification. COLLECTOR.EXE offers an extensive range of switches, which can be used to customize its behavior, allowing the targeting of specific files, directories, or drives (including network mapped ones), modifying logging options, and including or excluding machine specific information. For a complete list, refer to the “Planning and Testing for Application Deployment” document available as part of the Toolkit, or check the output of COLLECTOR.EXE /? command. Alternatively, it is possible to control the behavior of the Collector tool with INI files. Users can interactively invoke COLLECTOR.EXE. The least intrusive approach involves calling it from the login script, where it might be useful to apply the /d switch followed by an integer, indicating the minimum number of days that must pass between two consecutive runs of the tool. The Application Compatibility Analyzer can also be launched in unattended fashion using Systems Management Server or another software deployment method.
Analyzer accepts Collector-generated logs as input. It stores them in a compressed format as .CAB files, processes them, and dumps the results in an Access or SQL Server database. When launching the tool, you must provide the location of the logs and designate a target database. To check compatibility status, Analyzer connects to the online database maintained by Microsoft. There is also an option to perform this step at a later stage. Information is merged with the database contents, and results are listed in the form of a table, with Application Name, Status (compatible, compatible with issues, incompatible, or unknown), Version, Company Name, and Machines columns.
Application Verifier is geared toward software developers. It helps identify compatibility and stability issues via a graphical interface from which you specify which executable you intend to test. For each, select what is to be tested (e.g., detecting an invalid handle, registry, or filesystem use; calls made to obsolete APIs; and potential security issues) and click on the Run command button. The corresponding application is then loaded, and its behavior recorded in a log, which can be reviewed by clicking on the View Logs button. Errors and warnings are displayed with corresponding icons (to filter out non-relevant entries, select the “Show errors and warnings” option).
- Application Compatibility Admnistrator is geared toward system administrators. It uses legacy applications to resolve problem in a more flexible manner using built-in Windows XP features. It also makes it possible to deploy fixes to multiple computers. Like Application Verifier, Application Compatibility Admnistrator has a fairly intuitive graphical interface. Three top-level nodes in the left pane of the main window display the content of System Database, Installed Databases, and Custom Databases (initially empty). System Database lists a large number of applications that Microsoft has already fixed (you can locate them in the Application subnode) along with the compatibility fixes and modes (in the Compatibility Fixes and Compatibility Modes subnodes) available by default. The contents of the Installed and Custom Databases nodes reflect any custom changes that have or will be applied to the local system.
Windows XP and Windows 2003 deal with compatibility issues by storing information about legacy applications and associated fixes in compatibility databases residing in the AppPatch subfolder of the Windows installation directory. This subfolder contains several already prepackaged databases, such as Apphelp.sdb (which links applications and associated help messages), Sysmain.sdb (which links applications and associated compatibility modes and fixes), Drvmain.sdb (which links drivers and associated help messages), and Msimain.sdb (which links Windows Installer .MSI files and associated help messages). In addition to these prepackaged databases, you can create custom ones (residing in the AppPatchCustom subfolder).
To create a custom database, launch the Application Compatibility Administrator. You should see a New Database listed under the Custom Databases subnode. Its context-sensitive menu (as well as the Database menu of the main menu) gives you the option of creating a new Application Fix, writing an Apphelp Message, or defining the Compatibility Mode.
After selecting the first option, you will be prompted for the application name and the location of its executable, followed by the compatibility mode, compatibility fix, and matching information (used to identify the same program on other computers). The second option, after prompting for the application name, the location of its executable, and matching information, will ask you to specify the help text message, URL reference with more detailed description of the problem, and the help behavior (determining whether the application will be allowed to run after the message gets displayed). Note that you can also add a help message to an existing Application Fix. The third option enables you to define your own compatibility mode, which will encompass all compatibility fixes selected from the list included with the Administrator. This simplifies future configurations (since you can select a single custom compatibility mode instead of a number of corresponding compatibility fixes). After you’ve finished customizing, save the database to an arbitrary location. At this point, you are ready to install it and, potentially, deploy it to other computers.
Installation can be performed directly from the Application Compatibility Administrator menu (using the Install option from the context sensitive or File menu) or with SDBINST.EXE executable, which is included as part of the Windows XP (and Windows 2003) operating system files. The first option comes in handy during testing, but its graphical interface and local scope of operations are limiting factors when considering larger deployments. SDBINST.EXE on the other hand, is much more versatile, since it functions as a comand-line utility and can be incorporated into various deployment scenarios. It takes one input parameter, specifying target database and a number of switches, which determine the mode of operation (installation or uninstallation, quiet or non-quiet).
If none of these methods resolve your application issues (especially when dealing with Windows 2000 applications not supported on the Windows XP platform), consider setting up a virtual instance of the operating system on a Windows XP desktop (such as a VMWare virtual server or Microsoft Virtual PC). Another possibility would be to use a thin-client solution, such as Microsoft Terminal Services or a Citrix Metaframe-based product.