Monday, December 10, 2012

Detecting MSXML4, MSXML6 Versions

Issue:
Service Pack of MSXML is not apparent. For example, the Add\Remove Programs applet may list MSXML6 Parser as an installed program, without mention that it is Service Pack 2.
Environment:
Windows All Versions
Solution:
Look at the version of the %systemfiles%\msxml*.dll
The number which follows the major version is the "Service Pack"
For example, if on the properties of msxml6.dll, the version is 6.2, then the Service Pack is 2.

Project: Detect MSXML Service Pack from Command Line
Obtain the latest version of "filever.exe", available for free from Microsoft as part of the Windows Support Tools. For example, from http://www.microsoft.com/en-us/download/details.aspx?id=18546
Then, run the following:

filever.exe C:\Windows\System32\msxml* > xmlversions.txt
findstr /C:"  4.0" xmlversions.txt > nul
IF %ERRORLEVEL% EQU 0 (ECHO MSXML4)
findstr /C:"  4.1" xmlversions.txt > nul
IF %ERRORLEVEL% EQU 0 (ECHO MSXML4SP1)
findstr /C:"  4.2" xmlversions.txt > nul
IF %ERRORLEVEL% EQU 0 (ECHO MSXML4SP2)
findstr /C:"  4.3" xmlversions.txt > nul
IF %ERRORLEVEL% EQU 0 (ECHO MSXML4SP3)
findstr /C:"  6.0" C:\Temp\xmlversions.txt > nul
IF %ERRORLEVEL% EQU 0 (ECHO MSXML6)
findstr /C:"  6.1" C:\Temp\xmlversions.txt > nul
IF %ERRORLEVEL% EQU 0 (ECHO MSXML6SP1)
findstr /C:"  6.2" C:\Temp\xmlversions.txt > nul
IF %ERRORLEVEL% EQU 0 (ECHO MSXML6SP2)
findstr /C:"  6.3" C:\Temp\xmlversions.txt > nul
IF %ERRORLEVEL% EQU 0 (ECHO MSXML6SP3)