Troubleshooting Side-by-Side Installations
If you are having problems testing or developing your side-by-side installed applications under Windows XP, 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 Obtaining Information about Dependent DLLs.
- 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.
- 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.
- 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 5.0 loading with it. This task becomes more important if more than one version of MSXML 5.0 has been side-by-side installed under Windows XP 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.
To use ListDLLs to obtain information about dependent DLLs
- 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.
- 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).
- Run Project1.exe from the same test folder location.
- 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
0x00400000 0x4000 1.00.0000.0000 C:\temp\Project1.exe
0x77f50000 0xa9000 5.01.2600.0000 C:\WINDOWS\System32\ntdll.dll 0x77e60000 0xe5000 5.01.2600.0000 C:\WINDOWS\system32\kernel32.dll 0x73420000 0x153000 6.00.0092.0037 C:\WINDOWS\System32\MSVBVM60.DLL 0x77d40000 0x8d000 5.01.2600.0000 C:\WINDOWS\system32\USER32.dll 0x77c70000 0x40000 5.01.2600.0000 C:\WINDOWS\system32\GDI32.dll 0x77dd0000 0x8b000 5.01.2600.0000 C:\WINDOWS\system32\ADVAPI32.dll 0x77cc0000 0x75000 5.01.2600.0000 C:\WINDOWS\system32\RPCRT4.dll 0x771b0000 0x11a000 5.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 5.01.2600.0000 C:\WINDOWS\System32\MSCTF.dll - Click Test DLL in the sample application.
- 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\msxml5.dll
Other Resources
- How to Build and Service Isolated Applications and Side-by-Side Assemblies for Windows XP
- Isolated Applications and Side-by-Side Assemblies