Troubleshooting Side-by-Side Installations

If you are having problems testing or developing your side-by-side installed applications under Windows XP or Windows Server 2003, the following tips and best practices might help.

  • Verify the version and path of any dependent DLLs loaded by your application. A variety of tools are available that can provide this information. For information about using ListDLLs (a non-Microsoft freeware utility) to do this, see the section entitled "Obtaining Information about Dependent DLLs" below.

  • Manifest files are written in XML, and XML markup is case-sensitive. Verify that you have preserved exact case in any characters used for element or attribute names.

  • In general, if you are using Notepad or another text editing program, using a tool to validate your manifests before you attempt to use them should help catch authoring errors and make sure that your manifest files conform to the manifest file schema. One such tool for validating manifests is Manifestchk.vbs, which is available from MSDN Online.

  • Make sure that your manifest files are named identically to the names of your application or assemblies. For example, the manifest file for MyApplication.exe should be named "MyApplication.exe.manifest" and the name for the manifest file for MyComponent.dll should be "MyComponent.dll.manifest", and so on.

  • When preparing your side-by-side installations for deployment, do not use .cab files to package your application for installing on Windows XP. If you do need to use a .cab file, be aware that side-by-side installation is no longer available.

  • Public key tokens and signatures are used to verify the trustworthiness of your DLL. If you are concerned about this issue, consider using additional tools like Mt.exe or Pktextract.exe to help prepare your side-by-side installation. These tools are avilable from MSDN Online.

  • Preferably, use one of the current versions of a third-party installation tool such as InstallShield that supports the Windows Installer 2.0. These tools simplify the process of packaging and installing side-by-side assemblies by automating the design of various aspects of your Windows installer package (.msi) file.

Obtaining Information about Dependent DLLs

When testing side-by-side installation of your component, you might want to determine additional information about the version and location of MSXML loading with it. This task becomes more important if more than one version of MSXML 4.0 or later has been side-by-side installed under Windows XP or Windows Server 2003 and you are trying to troubleshoot problems where potentially the version you need is not the one loading with your component or application.

This section provides instructions for using a third-party utility, ListDLLs, to check the version of Msxml4.dll loaded. ListDLLs also works well for checking version information for other dependent DLLs you might use in your applications.

Note

This procedure assumes you are using MSXML 4.0. If you are using a later version of MSXML that installs in Side-by-Side mode, version-specific details are different although the basic process is the same.

To use ListDLLs to obtain information about dependent DLLs

  1. Download the ListDLLs utility from the SysInternals.com Web site.

    Note

    ListDLLs is currently a freeware utility made available by a third-party software vendor, SysInternals.com. As such, it is not a Microsoft product and is not supported by Microsoft. For more information about ListDLLs, contact SysInternals.com directly.

  2. Extract and install your copy of Listdlls.exe to the folder for testing where you previously created your other sample files (Dlltest.dll and Project1.exe).

  3. Run Project1.exe from the same test folder location.

  4. Open a command prompt window and change directories to the test folder location. Then enter the following command:

    C:\temp>listdlls project1.exe
    

    At this point, you should see output similar to the following. This indicates that Msxml4.dll has not been loaded by the sample application.

    ListDLLs V2.23 - DLL lister for Win9x/NT
    Copyright (C) 1997-2000 Mark Russinovich
    http://www.sysinternals.com
    ---------------------------------------------------------------------
    Project1.exe pid: 2808
    Command line: "C:\data\SxS-article\Project1.exe"
    
      Base        Size      Version         Path
    
      0x77f50000  0xa9000   6.01.2600.0000  C:\WINDOWS\System32\ntdll.dll
      0x77e60000  0xe5000   6.01.2600.0000  C:\WINDOWS\system32\kernel32.dll
      0x73420000  0x153000  6.00.0092.0037  C:\WINDOWS\System32\MSVBVM60.DLL
      0x77d40000  0x8d000   6.01.2600.0000  C:\WINDOWS\system32\USER32.dll
      0x77c70000  0x40000   6.01.2600.0000  C:\WINDOWS\system32\GDI32.dll
      0x77dd0000  0x8b000   6.01.2600.0000  C:\WINDOWS\system32\ADVAPI32.dll
      0x77cc0000  0x75000   6.01.2600.0000  C:\WINDOWS\system32\RPCRT4.dll
      0x771b0000  0x11a000  6.01.2600.0000  C:\WINDOWS\system32\ole32.dll
      0x77120000  0x8b000   3.50.5014.0000  C:\WINDOWS\system32\OLEAUT32.dll
      0x77c10000  0x53000   7.00.2600.0000  C:\WINDOWS\system32\MSVCRT.DLL
      0x74720000  0x4b000   6.01.2600.0000  C:\WINDOWS\System32\MSCTF.dll
    
  5. Click Test DLL in the sample application.

  6. Repeat the command you entered in Step 4.

    You should now see lines similar to the following. This indicates that both Dlltest.dlll and Msxml4.dll are loaded:

      0x10000000  0x43000   1.00.0000.0001  C:\temp\DllTest.dll
      0x69b10000  0x139000  4.00.9004.0000  C:\WINDOWS\System32\msxml4.dll
    

Other Resources

For more information, search for the following articles at www.microsoft.com: