diff --git a/build.xml b/build.xml
index 592583f7e6..42e31f0381 100644
--- a/build.xml
+++ b/build.xml
@@ -507,6 +507,9 @@
+
+
+
diff --git a/history.txt b/history.txt
index 87159487d6..c6fa6c93eb 100644
--- a/history.txt
+++ b/history.txt
@@ -1,3 +1,7 @@
+2011-06-09 kytv
+ * Added an x64 wrapper for Windows. This is needed because a 32bit wrapper
+ cannot start a 64bit JVM.
+
2011-06-08 zzz
* Build:
- Add standard manifest to jbigi.jar
diff --git a/installer/install.xml b/installer/install.xml
index ed402e71c0..a56b0aeddf 100644
--- a/installer/install.xml
+++ b/installer/install.xml
@@ -130,11 +130,26 @@
+
+
+ SYSTEM_sun_arch_data_model
+ 64
+
+
+
+
+
+
+
+
+
diff --git a/installer/lib/wrapper/win64/I2Psvc.exe b/installer/lib/wrapper/win64/I2Psvc.exe
new file mode 100755
index 0000000000..6d6b610356
Binary files /dev/null and b/installer/lib/wrapper/win64/I2Psvc.exe differ
diff --git a/installer/lib/wrapper/win64/README-x64-win.txt b/installer/lib/wrapper/win64/README-x64-win.txt
new file mode 100644
index 0000000000..e7f3279dc0
--- /dev/null
+++ b/installer/lib/wrapper/win64/README-x64-win.txt
@@ -0,0 +1,5 @@
+Changes will probably be needed for newer versions than 3.5.9.
+
+To use the patch in this directory, copy Makefile-windows-x86-32.nmake to
+Makefile-windows-x86-64.nmake then "patch < x64-win.patch". Compiles cleanly
+using VS2010.
diff --git a/installer/lib/wrapper/win64/wrapper.dll b/installer/lib/wrapper/win64/wrapper.dll
new file mode 100644
index 0000000000..9f27992fae
Binary files /dev/null and b/installer/lib/wrapper/win64/wrapper.dll differ
diff --git a/installer/lib/wrapper/win64/x64-win.patch b/installer/lib/wrapper/win64/x64-win.patch
new file mode 100644
index 0000000000..4679c6cd5b
--- /dev/null
+++ b/installer/lib/wrapper/win64/x64-win.patch
@@ -0,0 +1,26 @@
+--- Makefile-windows-x86-64.nmake 2011-05-28 21:12:05.383721860 +0000
++++ Makefile-windows-x86-64.nmake 2011-06-09 19:43:59.349132461 +0000
+@@ -9,19 +9,19 @@
+
+ PROJ = wrapper
+
+-COMPILE = cl /D "WIN32" /D "NDEBUG" /FD /EHsc /MT /W3 /nologo /c /Zi /errorReport:prompt /D "_CRT_SECURE_NO_DEPRECATE" /D "UNICODE" /D "_UNICODE" /D "_WIN32_WINNT=0x0500"
+-LINK = link /NOLOGO /MANIFEST /DEBUG /MACHINE:X86 /ERRORREPORT:PROMPT DelayImp.lib
++COMPILE = cl /D "WIN32" /D "WIN64" /D "NDEBUG" /FD /EHsc /MT /W3 /nologo /c /Zi /errorReport:prompt /D "_CRT_SECURE_NO_DEPRECATE" /D "UNICODE" /D "_UNICODE" /D "_WIN32_WINNT=0x0500"
++LINK = link /NOLOGO /MANIFEST /DEBUG /MACHINE:AMD64 /ERRORREPORT:PROMPT DelayImp.lib
+ RC = rc
+
+ # EXE Definitions
+-EXE_OUTDIR = $(PROJ)32_VC8__Win32_Release
++EXE_OUTDIR = $(PROJ)32_VC8__Win64_Release
+ EXE_OBJS = $(EXE_OUTDIR)\wrapper_i18n.obj $(EXE_OUTDIR)\logger.obj $(EXE_OUTDIR)\property.obj $(EXE_OUTDIR)\wrapper.obj $(EXE_OUTDIR)\wrapper_win.obj $(EXE_OUTDIR)\wrappereventloop.obj $(EXE_OUTDIR)\wrapper_file.obj $(EXE_OUTDIR)\wrapperinfo.obj
+ EXE_LIBS = mpr.lib shell32.lib wsock32.lib shlwapi.lib advapi32.lib user32.lib Crypt32.lib Wintrust.lib pdh.lib
+ EXE_COMPILE_OPTS = /O2 /GL /D "_CONSOLE"
+ EXE_LINK_OPTS = /INCREMENTAL:NO /SUBSYSTEM:CONSOLE /MANIFESTFILE:"$(EXE_OUTDIR)\$(PROJ).exe.intermediate.manifest" /PDB:"$(EXE_OUTDIR)\$(PROJ).pdb" /OPT:REF /OPT:ICF /LTCG
+
+ # DLL Definitions
+-DLL_OUTDIR = $(PROJ)JNI32_VC8__Win32_Release
++DLL_OUTDIR = $(PROJ)JNI32_VC8__Win64_Release
+ DLL_OBJS = $(DLL_OUTDIR)\wrapper_i18n.obj $(DLL_OUTDIR)\wrapperjni.obj $(DLL_OUTDIR)\wrapperjni_win.obj $(DLL_OUTDIR)\wrapperinfo.obj
+ DLL_LIBS = shell32.lib advapi32.lib user32.lib
+ DLL_COMPILE_OPTS = /Od /I "..\" /I ".\" /I "$(JAVA_HOME)\include" /I "$(JAVA_HOME)\include\win32" /D "_WINDOWS" /D "_USRDLL" /D "DECODERJNI_VC8_EXPORTS" /D "_WINDLL"
diff --git a/router/java/src/net/i2p/router/RouterVersion.java b/router/java/src/net/i2p/router/RouterVersion.java
index f5c9264549..43dca92409 100644
--- a/router/java/src/net/i2p/router/RouterVersion.java
+++ b/router/java/src/net/i2p/router/RouterVersion.java
@@ -18,7 +18,7 @@ public class RouterVersion {
/** deprecated */
public final static String ID = "Monotone";
public final static String VERSION = CoreVersion.VERSION;
- public final static long BUILD = 20;
+ public final static long BUILD = 21;
/** for example "-test" */
public final static String EXTRA = "";