Application Compatibility Solutions

Applies To: Windows Server 2003, Windows Server 2003 R2, Windows Server 2003 with SP1, Windows Server 2003 with SP2

Windows XP Professional and Windows Server 2003 resolve application compatibility problems by dynamically matching applications with solutions. The matching mechanism is controlled by a dynamic-link library (DLL) that starts and runs the matching mechanism whenever a user installs or runs an application. The matching mechanism is transparent and has a minimal effect on the performance of the operating system or installed applications.

To match applications with solutions, the matching mechanism relies on several databases. The databases contain a list of applications that have known problems and instructions for solving those problems. The databases are saved in the systemroot\AppPatch folder on Windows XP Professional and Windows Server 2003.

Three types of application compatibility databases are available: migration databases, prepackaged databases, and custom databases. The files containing the migration databases have an .inf extension; the files containing the prepackaged and custom databases have an .sdb extension. Throughout this chapter the term .sdb file is used to refer to prepackaged and custom application compatibility databases.

Migration databases   These databases, which are provided by Microsoft, are used during an operating system upgrade to determine whether an application has compatibility problems, and to warn users about these compatibility problems if they prevent the application from running on the new operating system. Two migration databases are provided — one for checking applications that run on Windows 95, Windows 98, and Windows Me, and one for checking applications that run on the Microsoft® Windows NT® and Microsoft® Windows® 2000 operating systems. Migration databases have an .inf file name extension.

Prepackaged databases   These databases also are provided by Microsoft, and are used when an application installs or runs, to determine whether the application has compatibility problems and to provide solutions to those problems. Prepackaged databases have the .sdb file name extension.

Prepackaged databases can contain any of the following solutions:

  • An application compatibility fix. This is a segment of code that replaces a problematic function call with a function call that is compatible with Windows XP Professional or Windows Server 2003. This ensures that the operating system returns the result that the application expects.

  • An application compatibility mode. This is a collection of application compatibility fixes that, together, emulate a specific operating system environment. For example, a Windows 95 application compatibility mode contains approximately 50 of the most common application compatibility fixes that applications designed to run on Windows 95 need in order to run on Windows XP Professional or Windows Server 2003.

  • An Application Help message. This is a message that is displayed when a user installs or runs an application that is incompatible with the operating system, and an application compatibility fix or mode is not available or effective. An Application Help message can warn a user about an incompatibility but still let the user install or run the incompatible application, or it can block the user from installing or running the application.

Custom databases   These databases are created by you, and can contain the same types of solutions as the prepackaged databases — application compatibility fixes, application compatibility modes, and Application Help messages. The difference is that these databases contain solutions for applications that are not addressed in the prepackaged databases. You can give a custom database any name, but it must have the .sdb file name extension. You also can save a custom database anywhere on a computer, but it is usually most convenient and efficient to save your custom databases in a subfolder in the systemroot\AppPatch folder (for example, systemroot\AppPatch\Custom).

In addition to the databases, the matching mechanism relies on several .dll files. These .dll files contain the code segments that run when an application requires an application compatibility fix or mode. These files begin with the letters "ac," and are installed by the operating system in the systemroot\AppPatch folder.

Table 3.1 describes all of the application compatibility databases that are prepackaged by Microsoft. The .inf files are stored on the Windows XP Professional and Windows Server 2003 operating system CDs. The .sdb files are stored in the systemroot\AppPatch folder.

Table 3.1   Application Compatibility Databases

File Description

MigDB.inf

Migration database that contains a list of Windows 95, Windows 98, and Windows Millennium Edition applications that are incompatible with Windows XP Professional or Windows Server 2003.

NTCompat.inf

Migration database that contains a list of applications that are designed to run on the Microsoft® Windows NT® Server 4.0 and Windows 2000 operating systems and are incompatible with Windows XP Professional or Windows Server 2003.

Apphelp.sdb

Prepackaged database that contains a list of third-party applications that have compatibility problems and associated Application Help messages. You can add third-party applications and custom Application Help messages to this database, but you cannot change or delete the existing list of names and Application Help messages.

Sysmain.sdb

Prepackaged database that contains a list of third-party applications that have compatibility problems and their associated application compatibility fixes and modes. You cannot change or delete the information in this database, but you can use the application compatibility fixes and modes that it contains to create custom databases.

Drvmain.sdb

Prepackaged database that contains a list of device drivers that have compatibility problems and their associated Application Help messages.

Msimain.sdb

Prepackaged database that contains a list of Windows Installer packages (.msi files) that have compatibility problems and their associated Application Help messages.