diff -aurN 001/SCons/Config/gnu 002/SCons/Config/gnu
--- 001/SCons/Config/gnu
+++ 002/SCons/Config/gnu
@@ -21,6 +21,8 @@
 def cross_env(env):
 	if env['PLATFORM'] != 'win32':
 		env.Tool('crossmingw', toolpath = [Dir('../Tools').rdir()])
+	else:
+		env.Tool('mingw_w64')
 
 ### flags
 
@@ -44,6 +46,8 @@
 defenv['SUBSYS_WIN'] = '-Wl,--subsystem,windows'
 defenv['MSVCRT_FLAG'] = ''
 defenv['STDCALL'] = '"__attribute__((__stdcall__))"'
+defenv['SHLIBPREFIX'] = ''
+defenv['PLATFORM'] = 'win32'
 
 # Don't allow mingw to link with LIBGCC*.DLL and LIBSTDC++-*.DLL 
 if defenv['PLATFORM'] == 'win32':
diff -aurN 001/SCons/utils.py 002/SCons/utils.py
--- 001/SCons/utils.py
+++ 002/SCons/utils.py
@@ -16,19 +16,6 @@
 	appropriate compiler and linker options to the environment
 	"""
 	zlib = 'z'
-	if platform == 'win32':
-		if 'ZLIB_W32' in env:
-			# Add include and library path of zlib for Win32
-			env.Append(CPPPATH = env['ZLIB_W32_INC'])
-			env.Append(LIBPATH = env['ZLIB_W32_LIB'])
-			zlib = ['zdll', 'z']
-			if 'ZLIB_W32_DLL' in env and env['ZLIB_W32_DLL']:
-				env.DistributeW32Bin(env['ZLIB_W32_DLL'], alias=alias)
-			if 'ZLIB_W32_NEW_DLL' in env and env['ZLIB_W32_NEW_DLL']:
-				env.DistributeW32Bin(env['ZLIB_W32_NEW_DLL'], alias=alias)
-		else:
-			print('Please specify folder of zlib for Win32 via ZLIB_W32')
-			Exit(1)
 
 	# Avoid unnecessary configuring when cleaning targets 
 	# and a clash when scons is run in parallel operation.
diff -aurN 001/SConstruct 002/SConstruct
--- 001/SConstruct
+++ 002/SConstruct
@@ -251,7 +251,7 @@
 # write version into version.h
 f = open(defenv.File('#$BUILD_CONFIG/nsis-version.h').abspath, 'w')
 f.write('// This file is automatically generated by SCons\n// DO NOT EDIT THIS FILE\n')
-f.write('#include "%s"\n' % File('#/Source/tchar.h').abspath)
+f.write('#include "../../../Source/tchar.h"\n')
 
 if (not defenv.has_key('VER_PACKED')) and defenv.has_key('VER_MAJOR') and defenv.has_key('VER_MINOR'):
 	packed_r = packed_b = 0
diff -aurN 001/Source/util.cpp 002/Source/util.cpp
--- 001/Source/util.cpp
+++ 002/Source/util.cpp
@@ -1129,7 +1129,10 @@
 {
   STARTUPINFO si = { sizeof(STARTUPINFO), };
   PROCESS_INFORMATION pi;
-  if (!CreateProcess(NULL, const_cast<LPSTR>(cmd), NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi))
+  LPSTR modifiable_cmd = strdup(cmd);
+  BOOL result = CreateProcess(NULL, modifiable_cmd, NULL, NULL, FALSE, 0, NULL, NULL, &si, &pi);
+  free(modifiable_cmd);
+  if (!result)
     return GetLastError();
   WaitForSingleObject(pi.hProcess, INFINITE);
   GetExitCodeProcess(pi.hProcess, &si.cb);
