This article describes a simple method to determine the version of an mpp file. Please first read the Remarks section at the bottom.
 
Background
 
MS Project creates project plan files with “.mpp” file extension by default. The mpp file extension represents a proprietary file format recognized by MS Project. 
Note
XP may not display file extensions by default in Windows Explorer. The settings can be modified to display the file extensions in Windows Explorer’s Folder Options dialog box if you have required permissions. Display of the file extentions can make it a lot easier to work with the files in Windows Explorer.
Team members working on the same project in different locations often need to exchange MS Project files but it may not be always possible to have the same version of MS Project installed in all locations. MS Project supports opening from and saving to earlier formats, thus enables us to share mpp files in a mixed version environment, as long as we keep the versions at all locations updated with the latest release of Hotfixes or Service Packs. 
 
As an example, a user working with MS Project 2010 in location A, creates a new project plan and saves it to MS Project 2007 version format and then sends the file to another user using MS Project 2007 in location B.  The user in location B, opens the file with MS Project 2007, works on the file and then sends it back to the original user in location A without any conversion since MS Project 2010 is “backward compatible” and can open from the file formats of earlier versions, including MS Project 98.
Important Note
Service Pack 3 for MS Project 2003 contains a file converter that enables MS Project 2003 to read the MS Project 2007 file format, so MS Project 2003 can open the mpp files from the file format of MS Project 2007. MS Project 2003 cannot open the mpp files from the file format of MS Project 2010. None of the other versions can open the mpp files from the file format of later versions. 
MS Project 2010 is backward compatible with MS Project 98 (MS Project 2010 supports opening from the MS Project 98 file format) but MS Project 2010 cannot save to the MS Project 98 file format.
Some data related to the changed or the new features of the currently used version may be lost while saving to the file formats of earlier versions.  Read the related product documentation for incompatible features if you are sharing files with earlier versions.
Why do we need MS Project file version information ?
 
If we share the mpp files with users of different versions not updated with the latest Hoxfixes or Service Packs, we all may have some problems while working with those files. The version information of an mpp file may help us resolve the issues caused by missing updates. It is also a good practice to double-check the version information provided by the user sending the file.
 
There may be some old mpp files in our archive with no version information available. We do not need to find out what MS Project version can open the file by a time-consuming trial and error process if we can get the version information directly from the mpp file at the beginning. 
 
Method to determine the version of an mpp file
 
In the method described below, a simple batch file created filters the information extracted from an mpp file for any string containing “.MPP” or any string containing  the pattern [0-9] , . , . . . . , . . . .". The pattern is composed of a dot that matches any character in the string, a comma that matches a comma in the string and the optional items expression “[0-9]” that matches any digit from 0 to 9 in the string. The batch file displays any string containing “.MPP” or the pattern composed of the wildcard and regular characters.
 
The method is based on the assumption that any match with “.MPP” in the string contains the version number of the mpp file and any string matching the pattern contains the version number of MS Project used to save the file (See Remarks).
 
Follow the steps below to create the batch file:
Important Note
If you are not familiar with creating and modifying batch files or do not have permissions to create and work with such files in your system, please consult your IT Administrator.
  • Open Notepad application and enter the command lines given below:

@ECHO OFF
REM  Version.bat
ECHO Filename: %1
ECHO.
ECHO -- CHECK FOR PROJECT VERSION --
strings %1 | findstr "[0-9],.,....,...." 2>NUL
ECHO Check the following list for the first one or two digits of the string above (xx,.,....,....)
ECHO List of xx (Product Name): 8 (98), 9 (2000), 10 (2002), 11 (2003), 12 (2007), 14 (2010)
ECHO.
ECHO -- CHECK FOR MPP FILE VERSION --
strings %1 | findstr ".MPP" 2>NUL
ECHO Check the following list for the digit(s) at the end of the string above (...MPPxx)
ECHO List of xx (Product Name): 8 (98), 9 (2000/2002/2003), 12 (2007), 14 (2010)
ECHO.
PAUSE
  • Save the file to a non-system directory or to a new one created with a descriptive name such as Utilities.

Note
In Notepad, set Save as type: to All Files and enter Version.bat into the File name: box and click OK to save the file.
  • Version.bat uses Strings program to extract version information from the mpp files. Download and unzip Strings into the same directory as Version.bat  (See the section “The programs and commands used in Version.bat file”).

  • Create a Desktop shortcut for Version.bat.

 

Testing the batch file
Important Note
The batch file opens the mpp file for only reading but always make backup copies of your mpp files before testing the batch file on the mpp files; work in a test folder with test files. 
Syntax errors may occur because of incorrect typing at the beginning. Be careful not to accidentally overwrite the mpp file.
  • To test the batch file with an mpp file, just drag and drop the mpp file over the desktop shortcut icon of Version.bat file.

Note
A practical way to run the batch file on an mpp file would be as follows:
If you have permissions, place a shortcut to Version.bat in SendTo directory. SendTo directory is hidden by default in XP desktop system. The path of SendTo directory is “C:\Documents and Settings\<your profile name>\SendTo” in XP.  Right-click on any mpp file to display shortcut menu (contextual menu); then apply Send To } Version.bat to run the batch file. Version.bat shortcut can be renamed to “DISPLAY MPP VERSION” without extension “.bat” to find it easily in the command list of the shortcut menu. We can also change the icon of the shortcut.
  • While the cmd window is open, right-click on the title to open Properties dialog box and change default settings for a better appearance.

  • The following is the output from Version.bat for an example mpp file saved to MS Project 98 format with MS Project 2003 but assume that we do not have this information at the beginning:

Filename: C:\ProjectPlan.mpp
 
-- CHECK FOR PROJECT VERSION --
11,3,2007,1529
11,3,2007,1529
Check the following list for the first one or two digits of the string above (xx,.,....,....)
List of xx (Product Name): 8 (98), 9 (2000), 10 (2002), 11 (2003), 12 (2007), 14 (2010)
 
-- CHECK FOR MPP FILE VERSION --
MSProject.MPP8
Check the following list for the digit(s) at the end of the string above (...MPPxx)
List of xx (Product Name): 8 (98), 9 (2000/2002/2003), 12 (2007), 14 (2010)
 
Press any key to continue . . .
  • Let’s review the output to find out the version information.

  • The batch file finds two occurrences of the search pattern in the mpp file as  11,3,2007,1529.

The first two digits in the string listed is 11. This is the internally used version number or major version number. The batch file also lists some combinations for lookup; “11” is in the lookup list and the number in parenthesis next to “11” is the year part of the product name which is 2003.
So we assume that the mpp file was saved with MS Project 2003.  
Note
The batch file may sometimes display some irrelevant lines containing the search strings but it is not difficult to distinguish them from the relevant information.
It is possible to further process the output from Strings program using text processing utilities and batch processing features to clean the unnecessary portions but it is always the best to keep it as simple as possible.
 
  • Let’s now check whether MS Project 2003 originally used to save the mpp file with that version number contains latest updates.

The latest update available for MS Project 2003 is listed as SP3 in the Update Center at http://technet.microsoft.com/en-us/office/ee748587.
 
We now need to find out to which version number SP3 corresponds. This is not something that we normally do as it certainly takes time but it is sometimes a necessary action especially while we are having some problems on an mpp file sent to us without a version history. The version number for SP3 can be found at http://support.microsoft.com/kb/923622 after a quick search for "Description of Project 2003 Service Pack 3" in the knowledge base web site at support.microsoft.com. It is as follows:
 
File name: Winproj.exe
Version    : 11.3.2007.1529
 
Version number is a four-part string with the format major.minor.build.revision where parts represent major version, minor version, build number and revision number respectively.  Build number is also called build version or update version which is 2007 in SP3.  The version number 11.3.2007.1529 given in KB article matches the comma separated one listed (it is 11,3,2007,1529) by the batch file. As a result, we assume that the mpp file was saved with MS Project 2003 SP3.
Important Note
The above assumption may help you find out cause of the problem with the mpp file but it is an assumption and should always be verified with the origin of the mpp file.
We do not know how the version number of the last update applied to the MS Project originally used to save the mpp file relates to the version string found in the mpp file by Version.bat. It is not documented.
  • Note MSProject.MPP8 string in the output. If we drop MSProject.MPP string it is just the number 8.

If we check the mpp file format version list included in the batch file output for a lookup, MPP8 corresponds to MS Project 98.  As a result, it’s an mpp file saved to the file format of MS Project 98.
Important Note
An mpp file format versioning system does not exist. The number “8” is used just for naming convenience as it only means “an mpp file saved by MS Project 98” or “an mpp file having the file format of MS Project 98”.
 
The programs and commands used in Version.bat file
 
  • Echo command

Echo is a built-in command (internal command) in XP operating system. Search for Echo in XP system help pages to have more information on the command. @ECHO OFF command line is used to turn the command-echoing feature off and not to echo the echo during batch file execution.
  • Findstr program

Findstr is a program or an external command (not like Echo which is a built-in command) that is included in XP desktop installation by default and it is found in “C:\Windows\System32” directory. The default system settings allow us to access Findstr program anywhere in the system so we do not need to include a path to file location in the command line. Findstr searches for patterns of text in files using regular expressions. Search for Findstr in the system help pages to have more information on Findstr program or visit the web site here at: http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/findstr.mspx?mfr=true
 
In the batch file, the pipe (|) redirects standard output of Strings program to the standard input of Findstr program.
 
2>NUL expression is used at the end of command lines to suppress any possible error message.
  • Strings program

Strings is a program developed by Mark Russinovich. Strings scans the file you pass it for UNICODE (or ASCII) strings of a default length of 3 or more UNICODE (or ASCII) characters. Visit the web site below to download Strings program: http://technet.microsoft.com/en-us/sysinternals/bb897439
 
Important Note
We need to place Strings program in the same directory with Version.bat since Version.bat will search the current directory to locate Strings program by default during the execution if we do not provide any path information in the command line.
Remarks
 
  • This article is provided "AS IS" with no warranty made as to technical accuracy and confers no rights.

  • Do not make any business decision based on the output of the batch file (purchasing a product etc...).

  • This is not a reverse coding attempt. The method used here is a simple string search in an mpp file and does not provide any information on the file structure or format. This article’s content is completely based on the information provided by the publicly available product web site documentation.

  • The article contains URLs that were valid at the time of submission. Some information in the article is based on the content of the product web pages at the time of submission. URLs provided here may change in time and may link to sites or pages that no longer exist.  Also note that the content accessed by using the URLs may change in time.

  • The lookup lists given in the batch file are to be used only for informational purposes, but not as a reference. Visit and search on http://support.microsoft.com to have information on version numbers used internally (e.g. 8, 9, 10, 11, 12, 14) and matching year part of the product names (e.g. MS Project 2003, MS Project 2007 or MS Project 2010).

  • The method described in this article is not a documented method to get version information of an mpp file.  It is not possible to guarantee the validity of the batch file output since it is not based on the documented information.  

  • The batch file was tested for a version of MS Project desktop installed in a 32-bit XP desktop system. It may or may not work in other operating systems running MS Project desktop.

  • The method is not tested with mpp files of all MS Project versions.  It may not display useful information for mpp files of all MS Project versions. The method may not work with corrupt mpp files.

  • The earliest version mentioned in this article is MS Project 98.

  • In this article, there is no mention of product version 13. It is not an overlooked information. That number is not included in Project versioning.