diff --git a/setversion.py b/setversion.py
new file mode 100644
index 0000000..3455900
--- /dev/null
+++ b/setversion.py
@@ -0,0 +1,79 @@
+# Python program to set the version.
+##############################################
+
+import re
+import sys
+
+def fileProcess( name, lineFunction ):
+	filestream = open( name, 'r' )
+	if filestream.closed:
+		print( "file " + name + " not open." )
+		return
+
+	output = ""
+	print( "--- Processing " + name + " ---------" )
+	while 1:
+		line = filestream.readline()
+		if not line: break
+		output += lineFunction( line )
+	filestream.close()
+	
+	if not output: return			# basic error checking
+	
+	print( "Writing file " + name )
+	filestream = open( name, "w" );
+	filestream.write( output );
+	filestream.close()
+	
+	
+def echoInput( line ):
+	return line
+
+major = input( "Major: " )
+minor = input( "Minor: " )
+build = input( "Build: " )
+
+print "Setting dox,tinyxml2.h"
+print "Version: " + `major` + "." + `minor` + "." + `build`
+
+#### Write the tinyxml.h ####
+
+def engineRule( line ):
+
+	matchMajor = "static const int TIXML2_MAJOR_VERSION"
+	matchMinor = "static const int TIXML2_MINOR_VERSION"
+	matchBuild = "static const int TIXML2_PATCH_VERSION"
+
+	if line[0:len(matchMajor)] == matchMajor:
+		print "1)tinyxml2.h Major found"
+		return matchMajor + " = " + `major` + ";\n"
+
+	elif line[0:len(matchMinor)] == matchMinor:
+		print "2)tinyxml2.h Minor found"
+		return matchMinor + " = " + `minor` + ";\n"
+
+	elif line[0:len(matchBuild)] == matchBuild:
+		print "3)tinyxml2.h Build found"
+		return matchBuild + " = " + `build` + ";\n"
+
+	else:
+		return line;
+
+fileProcess( "tinyxml2.h", engineRule )
+
+
+#### Write the dox ####
+
+def doxRule( line ):
+
+	match = "PROJECT_NUMBER"
+
+	if line[0:len( match )] == match:
+		print "dox project found"
+		return "PROJECT_NUMBER = " + `major` + "." + `minor` + "." + `build` + "\n"
+
+	else:
+		return line;
+
+fileProcess( "dox", doxRule )
+
