IE devmode plugin: 64 bits support end-to-end, build fixes & cleanup, other polishing items.

Review at http://gwt-code-reviews.appspot.com/1116801


git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9345 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/plugins/ie/README.txt b/plugins/ie/README.txt
new file mode 100644
index 0000000..f4f030b
--- /dev/null
+++ b/plugins/ie/README.txt
@@ -0,0 +1,17 @@
+GWT devmode plugin for IE
+~~~~~~~~~~~~~~~~~~~~~~~~~
+
+To build the plugin, you will need a windows system with Visual Studio 2008 or newer (WSDK 7.0+)
+
+To build:
+1) make sure devenv.exe is in the path
+2) make sure the binaries under $(projectroot)\third_party\java_src\gwt\svn\trunk\plugins\ie\prebuilt are writable.
+3) open a cmd.exe window, go to $(projectroot)\third_party\java_src\gwt\svn\trunk\plugins\ie
+4) run build.cmd
+
+To create msi installer:
+1) go to folder $(projectroot)\third_party\java_src\gwt\svn\trunk\plugins\ie\installer
+2) make sure the msi installers under $(projectroot)\third_party\java_src\gwt\svn\trunk\plugins\ie\prebuilt are writable.
+3) run build.cmd
+
+
diff --git a/plugins/ie/build.cmd b/plugins/ie/build.cmd
new file mode 100755
index 0000000..e3841a4
--- /dev/null
+++ b/plugins/ie/build.cmd
@@ -0,0 +1,18 @@
+@echo off
+setlocal
+echo.
+::check if correct folder
+::check if devenv is in the path
+echo.
+echo building 32 bits
+echo ~~~~~~~~~~~~~~~~
+::pushd oophm\oophm
+devenv /rebuild "Release|Win32" %~dp0\oophm\oophm\oophm.vcproj /out build_win32.log
+echo.
+echo building 64 bits
+echo ~~~~~~~~~~~~~~~~
+devenv /rebuild "Release|x64" %~dp0\oophm\oophm\oophm.vcproj /out build_win64.log
+echo.
+echo Done.
+echo.
+endlocal
diff --git a/plugins/ie/build.xml b/plugins/ie/build.xml
deleted file mode 100755
index 4c8a99d..0000000
--- a/plugins/ie/build.xml
+++ /dev/null
@@ -1,18 +0,0 @@
-<project name="ie" default="build" basedir=".">
-	<property name="plugin.root" value="ie" />
-	<import file="../common.ant.xml" />
-
-	<target name="build" description="Copy compiled plugin to the output folder">
-		<mkdir dir="${gwt.build.out}/plugins" />
-		<mkdir dir="${gwt.build.out}/plugins/ie" />
-		<copy todir="${gwt.build.out}/plugins/ie">
-			<fileset file="prebuilt/oophm.dll" />
-		</copy>
-	</target>
-
-	<target name="test" description="Run any tests">
-	</target>
-
-	<target name="checkstyle" description="Static style analysis">
-	</target>
-</project>
diff --git a/plugins/ie/installer/README.txt b/plugins/ie/installer/README.txt
index 8517837..b783838 100644
--- a/plugins/ie/installer/README.txt
+++ b/plugins/ie/installer/README.txt
@@ -1,11 +1,21 @@
-This directory contains the source code for the Windows installer. A new installer should
-be built using the build script every time oophm.dll is replaced.
+This directory contains the source code for the Windows installer. A new 
+installer should be built using the build script every time oophm.dll is 
+replaced.
 
-The build script will only work on a Windows system with WIX installed:
-http://wix.sourceforge.net/
+The build script will only work on a Windows system
 
 
-Files contained in this directory:
-installer.wxs.xml - the WIX script used to generate the installer
+Workflow:
+~~~~~~~~~
+if you build new binaries, do the following:
 
-build.xml - the ant build script
\ No newline at end of file
+1) check out ..\prebuilt\*.msi for editing
+  
+2) run build <version>, as in: build 1.2.123
+   this will generated all the msis. make sure to look at ..\prebuilt\*.msi 
+   to see if they were updated.
+
+4) Test the installation. Yes, make sure it works on x86, x64, it cleans the 
+   registry and folder upon uninstall, etc.
+   
+	
diff --git a/plugins/ie/installer/build.cmd b/plugins/ie/installer/build.cmd
new file mode 100755
index 0000000..203dc90
--- /dev/null
+++ b/plugins/ie/installer/build.cmd
@@ -0,0 +1,79 @@
+@echo off
+setlocal
+if .%1==. goto :usage
+echo.
+echo.
+
+echo Checking if output files are writeable...
+SET WRITEABLE_FILE_ERROR=0
+CALL :CheckWritable "%~dp0..\prebuilt\gwt-dev-plugin-x86.msi"
+CALL :CheckWritable "%~dp0..\prebuilt\gwt-dev-plugin-x64.msi"
+CALL :CheckWritable "%~dp0oophm.wxs"
+IF "%WRITEABLE_FILE_ERROR%"=="1" GOTO :DONE
+
+SET BINARY_DIR=%~dp0..\prebuilt\Win32
+SET BINARY_FILE=oophm.dll
+
+IF NOT EXIST %BINARY_DIR%\%BINARY_FILE% (
+    echo.
+	echo ERROR - Could not find oophm binary under %BINARY_DIR%
+	echo         Verify that the build succeeded before trying to create the installer.
+	echo.
+	goto :eof
+)
+
+echo.
+echo 'heating' binary %BINARY_FILE% under %BINARY_DIR% ...
+echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+%~dp0wix\heat.exe file %BINARY_DIR%\%BINARY_FILE% -v -nologo -gg -g1 -dr INSTALLDIR -generate components -directoryid ff -cg oophmDll -out %~dp0oophm.wxs -var var.binDir
+%~dp0wix\sed.exe --in-place=xml "s/Source=\"\$(var\.binDir)\\Win32\\oophm.dll\"/Source=\"\$(var\.binDir)\\oophm.dll\"/g" %~dp0oophm.wxs
+%~dp0wix\sed.exe --in-place=xml "s/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"Win32\"/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"$(var.platform)\"/g" %~dp0oophm.wxs
+%~dp0wix\sed.exe --in-place=xml "s/<Component /<Component Win64=\"$(var.win64Flag)\" /g" %~dp0oophm.wxs
+%~dp0wix\sed.exe --in-place=xml "s/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">\n\t<\?if $(var.platform)=x64 \?>\n\t<\?define win64Flag=\"yes\" \?>\n\t<\?else \?>\n\t<\?define win64Flag=\"no\" \?>\n\t<\?endif \?>/g" %~dp0oophm.wxs
+%~dp0wix\sed.exe --in-place=xml "s/Root=\"HKCR\"/Root=\"HKMU\"/g" %~dp0oophm.wxs
+
+echo.
+echo building 32 bit installer...
+echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+echo.
+%~dp0wix\candle -nologo -arch x86 -dversion=%1 -dplatform=Win32 -dbinDir=%~dp0\..\prebuilt\Win32\ -dbinary=oophm.dll %~dp0\installer.wxs.xml %~dp0\oophm.wxs
+%~dp0wix\light.exe -nologo oophm.wixobj installer.wxs.wixobj -o ..\prebuilt\gwt-dev-plugin-x86.msi -spdb
+
+echo.
+echo building 64 bit installer...
+echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+echo.
+%~dp0wix\candle -nologo -arch x64 -dversion=%1 -dplatform=x64 -dbinDir=%~dp0\..\prebuilt\x64\  -dbinary=oophm.dll %~dp0\installer.wxs.xml %~dp0\oophm.wxs
+%~dp0wix\light.exe -nologo oophm.wixobj installer.wxs.wixobj -o ..\prebuilt\gwt-dev-plugin-x64.msi -spdb
+
+echo.
+echo Done.
+echo.
+goto :eof
+
+:CheckWritable
+ECHO Checking if %1 is writable...
+SET RW=
+DIR /A:-R %1 1>NUL 2>NUL
+if %ERRORLEVEL% LEQ 0 GOTO :EOF
+ECHO.
+ECHO     ERROR: file %1 must be writeable before executing this script.
+ECHO            make sure you checked the file for editing.
+ECHO.
+SET WRITEABLE_FILE_ERROR=1
+ECHO %WRITEABLE_FILE_ERROR%
+GOTO :eof
+
+:usage
+echo.
+echo   usage: build ^<version^> 
+echo      where: ^<version^> has the syntax major.minor.build 
+echo.
+echo        example: build 1.1.3123
+
+:done
+echo.
+echo.
+
+endlocal
+
diff --git a/plugins/ie/installer/build.xml b/plugins/ie/installer/build.xml
deleted file mode 100644
index 0241d8f..0000000
--- a/plugins/ie/installer/build.xml
+++ /dev/null
@@ -1,86 +0,0 @@
-<!--
-  Build file for the Windows IE Plugin installer. This build should only be
-  run on a Windows system with WIX installed. You can download WIX at:
-  http://wix.sourceforge.net/ 
--->
-<project name="ieInstaller" default="build" basedir=".">
-  <property name="gwt.root" location="../../../" />
-  <property name="project.tail" value="plugins/ie/installer" />
-  <import file="../../../common.ant.xml" />
-
-  <property name="wix.bin"
-            location="C:/Program Files/Windows Installer XML v3/bin" />
-  <property name="wix.log" location="${project.build}/wix.log" />
-  <property name="installer.name" value="gwt-dev-plugin.msi" />
-
-  <!-- Verify that this is a windows system. -->
-  <fail unless="build.host.iswindows"
-    	message="Installer can only be built on a Windows system." />
-
-  <!-- Verify that wix is installed. -->
-  <property.ensure name="wix.bin.exists" location="${wix.bin}"
-     	message="You must install Wix (http://wix.sourceforge.net) to build the installer." />
-
-  <!-- Verify that the version has been specified. -->
-  <fail unless="installer.version"
-    	message="You must specify installer.version parameter in the form major.minor.build.revision (ex. -Dinstaller.version=0.9.1234.0)" />
-
-  <target name="build" description="Build the installer">
-    <mkdir dir="${project.build}" />
-
-    <echo message="Preparing WIX script for oophm.dll" />
-    <exec executable="${wix.bin}/heat.exe"
-          dir="../prebuilt"
-          failonerror="yes"
-          output="${wix.log}">
-      <arg line="file oophm.dll" />
-      <arg line="-out ${project.build}/oophm.wxs.xml" />
-      <arg line="-gg -g1" />
-      <arg line="-dr INSTALLDIR" />
-      <arg line="-cg oophmDll" />
-      <arg line="-var var.SourceDir" />
-      <arg line="-indent 2" />
-    </exec>
-    <replace file="${project.build}/oophm.wxs.xml"
-             token='KeyPath="yes"'
-             value='KeyPath="no"' />
-    <replace file="${project.build}/oophm.wxs.xml"
-             token='Directory="dir8D1DE08B7ED2BEAAD2CDE02C8AF2005E"'
-             value='Directory="INSTALLDIR"' />
-    <replace file="${project.build}/oophm.wxs.xml">
-      <replacetoken><![CDATA[<File]]></replacetoken>
-      <replacevalue><![CDATA[
-      <RegistryKey Root="HKCU" Key="SOFTWARE\Google\Google Web Toolkit\Installer" Action="createAndRemoveOnUninstall">
-        <RegistryValue Name="oophmDllRemove" Value="" Type="string" KeyPath="yes"/>
-      </RegistryKey>
-      <File]]></replacevalue>
-    </replace>
-
-    <echo message="Compiling WIX scripts" />
-    <exec executable="${wix.bin}/candle.exe"
-          failonerror="yes"
-          output="${wix.log}"
-          append="true">
-      <arg line="-out ${project.build}/" />
-      <arg line="-dSourceDir=..\\" />
-      <arg line="-dversion=${installer.version}" />
-      <arg line="${project.build}/oophm.wxs.xml" />
-      <arg line="installer.wxs.xml" />
-    </exec>
-
-    <echo message="Generating Windows Installer" />
-    <exec executable="${wix.bin}/light.exe"
-          failonerror="yes"
-          output="${wix.log}"
-          append="true">
-      <arg line="-o ${project.build}/${installer.name}" />
-      <arg line="${project.build}/oophm.wxs.wixobj" />
-      <arg line="${project.build}/installer.wxs.wixobj" />
-    </exec>
-
-    <echo message="Copying Windows Installer to prebuilt directory" />
-    <copy file="${project.build}/${installer.name}"
-          tofile="../prebuilt/${installer.name}" />
-  </target>
-
-</project>
diff --git a/plugins/ie/installer/generate-wxsfile.cmd b/plugins/ie/installer/generate-wxsfile.cmd
new file mode 100755
index 0000000..d2cf48c
--- /dev/null
+++ b/plugins/ie/installer/generate-wxsfile.cmd
@@ -0,0 +1,30 @@
+@echo OFF
+REM harvest COM settings from COM binary
+setlocal
+echo.
+if .%1==. goto :usage
+echo IMPORTANT: Make sure "%~dp0oophm.wsx" is checked out and writable!
+echo.
+echo 'heating' binary %~nx1 under %~dp1 ...
+echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+pushd %~dp1
+%~dp0wix\heat.exe file .\%~nx1 -v -nologo -gg -g1 -dr INSTALLDIR -generate components -directoryid ff -cg oophmDll -out %~dp0oophm.wxs -var var.binDir
+popd
+%~dp0wix\sed.exe --in-place=xml "s/Source=\"\$(var\.binDir)\\Win32\\oophm.dll\"/Source=\"\$(var\.binDir)\\oophm.dll\"/g" %~dp0oophm.wxs
+%~dp0wix\sed.exe --in-place=xml "s/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"Win32\"/Directory Id=\"dir315E0C50682DFB472927FE1254A22F6A\" Name=\"$(var.platform)\"/g" %~dp0oophm.wxs
+%~dp0wix\sed.exe --in-place=xml "s/<Component /<Component Win64=\"$(var.win64Flag)\" /g" %~dp0oophm.wxs
+%~dp0wix\sed.exe --in-place=xml "s/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">/<Wix xmlns=\"http:\/\/schemas.microsoft.com\/wix\/2006\/wi\">\n\t<\?if $(var.platform)=x64 \?>\n\t<\?define win64Flag=\"yes\" \?>\n\t<\?else \?>\n\t<\?define win64Flag=\"no\" \?>\n\t<\?endif \?>/g" %~dp0oophm.wxs
+%~dp0wix\sed.exe --in-place=xml "s/Root=\"HKCR\"/Root=\"HKMU\"/g" %~dp0oophm.wxs
+
+echo ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+echo Done.
+echo.
+goto :eof
+:usage
+echo.
+echo   usage: generate-wsxfile.cmd ^<binary-file-path^>
+echo.
+echo        example: generate-wsxfile.cmd ..\prebuilt\Win32\oophm.dll
+echo.
+endlocal
+
diff --git a/plugins/ie/installer/gwt.ico b/plugins/ie/installer/gwt.ico
new file mode 100644
index 0000000..79eb6b8
--- /dev/null
+++ b/plugins/ie/installer/gwt.ico
Binary files differ
diff --git a/plugins/ie/installer/installer.wxs.xml b/plugins/ie/installer/installer.wxs.xml
index 03a5357..6b5cc00 100644
--- a/plugins/ie/installer/installer.wxs.xml
+++ b/plugins/ie/installer/installer.wxs.xml
@@ -4,7 +4,13 @@
 
   <!-- Variables. -->
   <?define appName = "Google Web Toolkit Developer Plugin for IE" ?>
+  <?if $(var.platform)=x64 ?>
   <?define upgradeCode = "9a5e649a-ec63-4c7d-99bf-75adb345e7e5" ?>
+  <?define win64Flag = "yes" ?>
+  <?else ?>
+  <?define upgradeCode = "8B3F15BC-42FB-4e0e-BAC4-1DE8C4AA10FD" ?>
+  <?define win64Flag = "no" ?>
+  <?endif ?>
   <?define updateRegKey = "SOFTWARE\Google\Update\Clients\{$(var.upgradeCode)}" ?>
   <?define gwtRegKey = "SOFTWARE\Google\Google Web Toolkit\Installer" ?>
 
@@ -13,8 +19,9 @@
     compile to ensure that windows installer completely removes the old
     version and reinstalls the new version without complaining.
   -->
+
   <Product
-    Name='$(var.appName)'
+    Name='$(var.appName) ($(var.platform))'
     Id='*'
     UpgradeCode='$(var.upgradeCode)'
     Language='1033'
@@ -22,88 +29,143 @@
     Version='$(var.version)'
     Manufacturer='Google'>
 
+    <?if $(var.platform)=x64 ?>
     <Package
-      Id='*'
-      Keywords='Installer'
-      Description='$(var.appName) Installer'
-      Manufacturer='Google'
-      InstallPrivileges='limited'
-      InstallerVersion='100'
-      Languages='1033'
-      Compressed='yes'
-      SummaryCodepage='1252' />
-    <Media
-      Id='1'
-      Cabinet='product.cab'
-      EmbedCab='yes' />
+		  Id='*'
+		  Keywords='Installer'
+		  Description='$(var.appName) ($(var.platform))'
+		  Manufacturer='Google'
+		  InstallPrivileges='limited'
+		  InstallerVersion='200'
+		  Languages='1033'
+		  Compressed='yes'
+		  SummaryCodepage='1252'
+		  Platform='x64'
+		/>
+    <?else ?>
+    <Package
+		  Id='*'
+		  Keywords='Installer'
+		  Description='$(var.appName) ($(var.platform))'
+		  Manufacturer='Google'
+		  InstallPrivileges='limited'
+		  InstallerVersion='200'
+		  Languages='1033'
+		  Compressed='yes'
+		  SummaryCodepage='1252'
+		/>
+    <?endif ?>
 
-    <!-- Suppress reboot prompts. -->
+    <Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
+
+    <Icon Id="gwt.ico" SourceFile=".\gwt.ico"/>
+
+	<!-- Properties -->
     <Property Id='REBOOT'>ReallySuppress</Property>
+    <Property Id="ALLUSERS" Secure="yes"></Property>
+    <Property Id="ARPPRODUCTICON" Value="gwt.ico" />
+    <Property Id="ARPCOMMENTS" Value="Google Web Toolkit Developer Plugin for IE ($(var.platform))" />
+    <Property Id="ARPNOMODIFY" Value="1" />
+    <Property Id="ARPNOREPAIR" Value="1" />
+    <Property Id="ARPHELPLINK" Value="http://code.google.com/webtoolkit/" />
+    <Property Id="ARPURLINFOABOUT" Value="http://code.google.com/webtoolkit/" />
 
-    <!-- Install for current user. -->
-    <Property Id="ALLUSERS" Secure="yes" />
-
-    <!-- Remove old version completely when upgrading.  -->
-    <Upgrade
-      Id='$(var.upgradeCode)'>
-      <UpgradeVersion
-        OnlyDetect='no'
-        Property='PREVIOUSFOUND'
-        Minimum='0.0.0.0'
-        IncludeMinimum='yes'
-        RemoveFeatures='all' />
+    <Upgrade Id='$(var.upgradeCode)'>
+		<UpgradeVersion Property='UPGRADING'
+                  OnlyDetect='no'
+                  Minimum='0.0.0.0' IncludeMinimum='yes'
+                  Maximum='$(var.version)' IncludeMaximum='no' />
+		<UpgradeVersion Property='NEWERVERSIONDETECTED'
+                  OnlyDetect='yes'
+                  Minimum='$(var.version)' IncludeMinimum='yes' />
     </Upgrade>
+
     <InstallExecuteSequence>
-      <LaunchConditions
-        After='AppSearch' />
-      <RemoveExistingProducts
-        After='InstallValidate' />
+      <LaunchConditions After='AppSearch' />
+      <RemoveExistingProducts After='InstallValidate' />
+	  <Custom Action="NewerVersionError" After="FindRelatedProducts">NEWERVERSIONDETECTED</Custom>
     </InstallExecuteSequence>
 
+	<UI>
+		<Error Id="4000">A newer version of this product is already installed.</Error>
+	</UI>
+
+	<CustomAction Id="NewerVersionError" Error="4000"/>
+	
     <!-- Define the install directory. -->
-    <Directory
-      Id='TARGETDIR'
-      Name='SourceDir'>
-      <Directory
-        Id='LocalAppDataFolder'
-        Name='AppData'>
-        <Directory
-          Id='GoogleDir'
-          Name='Google'>
-          <Component Id="RemoveGoogleDir" Guid="*" DiskId="1">
+    <?if $(var.platform)=x64 ?>
+    <Directory Id='TARGETDIR'	Name='SourceDir'>
+      <Directory Id='AppDataFolder' Name='AppData'>
+        <Directory Id='GoogleDir' Name='Google'>
+          <Component Id="RemoveGoogleDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
             <CreateFolder/>
             <RemoveFolder Id="RemoveGoogleDirFolder" On="uninstall" />
-            <RegistryKey Root="HKCU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
+            <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
               <RegistryValue Name="RemoveGoogleDirFolder" Value="" Type="string" KeyPath="yes"/>
             </RegistryKey>
           </Component>
-          <Directory
-            Id='GoogleWebToolkitDir'
-            Name='Google Web Toolkit'>
-            <Component Id="RemoveGoogleWebToolkitDir" Guid="*" DiskId="1">
+          <Directory Id='GoogleWebToolkitDir' Name='Google Web Toolkit'>
+            <Component Id="RemoveGoogleWebToolkitDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
               <CreateFolder/>
               <RemoveFolder Id="RemoveGoogleWebToolkitDirFolder" On="uninstall" />
-              <RegistryKey Root="HKCU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
+              <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
                 <RegistryValue Name="RemoveGoogleWebToolkitDirFolder" Value="" Type="string" KeyPath="yes"/>
               </RegistryKey>
             </Component>
-            <Directory
-              Id='DeveloperPluginDir'
-              Name='Developer Plugin'>
-              <Component Id="RemoveDeveloperPluginDir" Guid="*" DiskId="1">
+            <Directory Id='DeveloperPluginDir' Name='Developer Plugin'>
+              <Component Id="RemoveDeveloperPluginDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
                 <CreateFolder/>
                 <RemoveFolder Id="RemoveDeveloperPluginDirFolder" On="uninstall" />
-                <RegistryKey Root="HKCU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
+                <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
                   <RegistryValue Name="RemoveDeveloperPluginDirFolder" Value="" Type="string" KeyPath="yes"/>
                 </RegistryKey>
               </Component>
-              <Directory
-                Id='INSTALLDIR'
-                Name='IE'>
-                <Component Id="RemoveInstallDir" Guid="*" DiskId="1">
+              <Directory Id='INSTALLDIR' Name='IE'>
+                <Component Id="RemoveInstallDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
                   <CreateFolder/>
                   <RemoveFolder Id="RemoveInstallerDirFolder" On="uninstall" />
-                  <RegistryKey Root="HKCU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
+                  <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
+                    <RegistryValue Name="RemoveInstallerDirFolder" Value="" Type="string" KeyPath="yes"/>
+                  </RegistryKey>
+                </Component>
+			  </Directory>
+            </Directory>
+          </Directory>
+        </Directory>
+      </Directory>
+    </Directory>
+    <?else?>
+    <Directory Id='TARGETDIR'	Name='SourceDir'>
+      <Directory Id='AppDataFolder' Name='AppData'>
+        <Directory Id='GoogleDir' Name='Google'>
+          <Component Id="RemoveGoogleDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
+            <CreateFolder/>
+            <RemoveFolder Id="RemoveGoogleDirFolder" On="uninstall" />
+            <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
+              <RegistryValue Name="RemoveGoogleDirFolder" Value="" Type="string" KeyPath="yes"/>
+            </RegistryKey>
+          </Component>
+          <Directory Id='GoogleWebToolkitDir' Name='Google Web Toolkit'>
+            <Component Id="RemoveGoogleWebToolkitDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
+              <CreateFolder/>
+              <RemoveFolder Id="RemoveGoogleWebToolkitDirFolder" On="uninstall" />
+              <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
+                <RegistryValue Name="RemoveGoogleWebToolkitDirFolder" Value="" Type="string" KeyPath="yes"/>
+              </RegistryKey>
+            </Component>
+            <Directory Id='DeveloperPluginDir' Name='Developer Plugin'>
+              <Component Id="RemoveDeveloperPluginDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
+                <CreateFolder/>
+                <RemoveFolder Id="RemoveDeveloperPluginDirFolder" On="uninstall" />
+                <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
+                  <RegistryValue Name="RemoveDeveloperPluginDirFolder" Value="" Type="string" KeyPath="yes"/>
+                </RegistryKey>
+              </Component>
+              <Directory Id='INSTALLDIR' Name='IE'>
+                <Component Id="RemoveInstallDir" Guid="*" DiskId="1" Win64="$(var.win64Flag)">
+                  <CreateFolder/>
+                  <RemoveFolder Id="RemoveInstallerDirFolder" On="uninstall" />
+                  <RegistryKey Root="HKMU" Key="$(var.gwtRegKey)" Action="createAndRemoveOnUninstall">
                     <RegistryValue Name="RemoveInstallerDirFolder" Value="" Type="string" KeyPath="yes"/>
                   </RegistryKey>
                 </Component>
@@ -113,54 +175,34 @@
         </Directory>
       </Directory>
     </Directory>
+    <?endif?>
 
     <!-- Set some registry values. -->
-    <Component
-      Id='registryValues'
-      Directory='INSTALLDIR'
-      Guid='*'>
-      <RegistryKey
-        Root='HKCU'
-        Action='createAndRemoveOnUninstall'
-        Key='$(var.updateRegKey)'>
-        <RegistryValue
-          Name='pv'
-          Value='$(var.version)'
-          Type='string' />
-        <RegistryValue
-          Name='name'
-          Value='$(var.appName)'
-          Type='string' />
-        <RegistryValue
-          Name='lang'
-          Value='en'
-          Type='string' />
+    <Component Id='registryValues' Directory='INSTALLDIR' Guid='*' Win64="$(var.win64Flag)">
+      <RegistryKey Root='HKMU' Action='createAndRemoveOnUninstall' Key='$(var.updateRegKey)'>
+        <RegistryValue Name='pv' Value='$(var.version)' Type='string' />
+        <RegistryValue Name='name' Value='$(var.appName)' Type='string' />
+        <RegistryValue Name='lang' Value='en' Type='string' />
       </RegistryKey>
+	  <!-- requires per machine install (elevated)
+      <RegistryKey Root='HKMU' Action='createAndRemoveOnUninstall' Key='SOFTWARE\Microsoft\Windows\CurrentVersion\explorer\Browser Helper Objects\{1D6156B6-002B-49E7-B5CA-C138FB843B4E}'>
+        <RegistryValue Name='NoExplorer' Value='1' Type='integer' />
+      </RegistryKey>
+	  -->
     </Component>
 
     <!-- Define the features to install. -->
-    <Feature
-      Id='CompleteFeature'
-      Display='expand'
-      Level='1'
-      Absent='disallow'>
+    <Feature Id='CompleteFeature' Display='expand' Level='1' Absent='disallow'>
       <!--
         Loaded from oophm.wxs.xml, which is generated by the build
         script.
-      -->
-      <ComponentRef
-        Id='RemoveGoogleDir' />
-      <ComponentRef
-        Id='RemoveGoogleWebToolkitDir' />
-      <ComponentRef
-        Id='RemoveDeveloperPluginDir' />
-      <ComponentRef
-        Id='RemoveInstallDir' />
-      <ComponentGroupRef
-        Id='oophmDll' />
-      <ComponentRef
-        Id='registryValues' />
+        -->
+      <ComponentRef Id='RemoveGoogleDir' />
+      <ComponentRef Id='RemoveGoogleWebToolkitDir' />
+      <ComponentRef Id='RemoveDeveloperPluginDir' />
+      <ComponentRef Id='RemoveInstallDir' />
+      <ComponentGroupRef Id='oophmDll' />
+      <ComponentRef Id='registryValues' />
     </Feature>
-
   </Product>
 </Wix>
diff --git a/plugins/ie/installer/oophm.wxs b/plugins/ie/installer/oophm.wxs
new file mode 100644
index 0000000..3ed137a
--- /dev/null
+++ b/plugins/ie/installer/oophm.wxs
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
+	<?if $(var.platform)=x64 ?>
+	<?define win64Flag="yes" ?>
+	<?else ?>
+	<?define win64Flag="no" ?>
+	<?endif ?>
+    <Fragment>
+        <DirectoryRef Id="INSTALLDIR">
+            <Directory Id="dir315E0C50682DFB472927FE1254A22F6A" Name="$(var.platform)" />
+        </DirectoryRef>
+    </Fragment>
+    <Fragment>
+        <ComponentGroup Id="oophmDll">
+            <Component Win64="$(var.win64Flag)" Id="cmpC5076456A3EE2DC3FC2683246BE38AD6" Directory="dir315E0C50682DFB472927FE1254A22F6A" Guid="48789066-DDF6-46C5-BF60-408BC872BF05">
+                <File Id="filEF78EFE99C26E3436EC9C8852A85BE88" KeyPath="yes" Source="$(var.binDir)\oophm.dll">
+                    <TypeLib Id="{9259F105-BE55-4BF6-B7CE-D0AA878C1BA6}" Description="oophm 1.0 Type Library" HelpDirectory="dir315E0C50682DFB472927FE1254A22F6A" Language="0" MajorVersion="1" MinorVersion="0">
+                        <AppId Description="oophm" Id="{F9365E53-5A14-47F3-BF1D-10CAAB815309}">
+                            <Class Id="{1D6156B6-002B-49E7-B5CA-C138FB843B4E}" Context="InprocServer32" Description="plugin Class" ThreadingModel="apartment" Version="1.0" Programmable="yes" Control="yes">
+                                <ProgId Id="oophm.plugin.1" Description="plugin Class">
+                                    <ProgId Id="oophm.plugin" Description="plugin Class" />
+                                </ProgId>
+                            </Class>
+                        </AppId>
+                        <Class Id="{1A2A78F4-B5A4-4208-B520-BDDA0A7EC5CB}" Context="InprocServer32" Description="ExceptionCatcher Class" ThreadingModel="apartment" Programmable="yes">
+                            <ProgId Id="oophm.ExceptionCatcher.1" Description="ExceptionCatcher Class">
+                                <ProgId Id="oophm.ExceptionCatcher" Description="ExceptionCatcher Class" />
+                            </ProgId>
+                        </Class>
+                        <Class Id="{644FD769-8B9D-4AC4-A79E-AAAF5CD751C1}" Context="InprocServer32" Description="JavaObject Class" ThreadingModel="apartment" Programmable="yes">
+                            <ProgId Id="oophm.JavaObject.1" Description="JavaObject Class">
+                                <ProgId Id="oophm.JavaObject" Description="JavaObject Class" />
+                            </ProgId>
+                        </Class>
+                        <Interface Id="{1C3FBB2D-58C2-426C-A461-E6002F9EE294}" Name="IExceptionCatcher" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
+                        <Interface Id="{58276E45-1F24-4B71-88AC-2A7D0C26CDFF}" Name="IJavaObject" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
+                        <Interface Id="{73607C2E-369B-4055-8020-D7643A59F521}" Name="Iplugin" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
+                        <Interface Id="{AB9B16A0-03E9-481E-ADF5-B00B860A8C3A}" Name="IpluginUI" ProxyStubClassId32="{00020424-0000-0000-C000-000000000046}" />
+                    </TypeLib>
+                </File>
+                <RegistryValue Root="HKMU" Key="AppID\oophm.DLL" Name="AppID" Value="{F9365E53-5A14-47F3-BF1D-10CAAB815309}" Type="string" Action="write" />
+                <RegistryValue Root="HKMU" Key="CLSID\{1D6156B6-002B-49E7-B5CA-C138FB843B4E}\MiscStatus\1" Value="131473" Type="string" Action="write" />
+                <RegistryValue Root="HKMU" Key="CLSID\{1D6156B6-002B-49E7-B5CA-C138FB843B4E}\MiscStatus" Value="0" Type="string" Action="write" />
+                <RegistryValue Root="HKMU" Key="CLSID\{1D6156B6-002B-49E7-B5CA-C138FB843B4E}\ToolboxBitmap32" Value="[!filEF78EFE99C26E3436EC9C8852A85BE88], 102" Type="string" Action="write" />
+            </Component>
+        </ComponentGroup>
+    </Fragment>
+    <Fragment>
+        <DirectoryRef Id="dir315E0C50682DFB472927FE1254A22F6A" />
+    </Fragment>
+</Wix>
\ No newline at end of file
diff --git a/plugins/ie/installer/wix/README.txt b/plugins/ie/installer/wix/README.txt
new file mode 100644
index 0000000..846b7eb
--- /dev/null
+++ b/plugins/ie/installer/wix/README.txt
@@ -0,0 +1,10 @@
+
+This folder contains WIX binaries used to build the installer. These files
+were copied as-is from the public website http://wix.codeplex.com/ and are 
+here for convenience and to make sure we have the right toolset version.
+
+for more information, license terms, please refer to:
+    http://wix.sourceforge.net/
+    http://wix.codeplex.com/
+    http://wix.codeplex.com/license
+    
diff --git a/plugins/ie/installer/wix/WixIIsExtension.dll b/plugins/ie/installer/wix/WixIIsExtension.dll
new file mode 100755
index 0000000..9c3e2a8
--- /dev/null
+++ b/plugins/ie/installer/wix/WixIIsExtension.dll
Binary files differ
diff --git a/plugins/ie/installer/wix/WixUtilExtension.dll b/plugins/ie/installer/wix/WixUtilExtension.dll
new file mode 100755
index 0000000..36eac99
--- /dev/null
+++ b/plugins/ie/installer/wix/WixUtilExtension.dll
Binary files differ
diff --git a/plugins/ie/installer/wix/WixVSExtension.dll b/plugins/ie/installer/wix/WixVSExtension.dll
new file mode 100755
index 0000000..2fa2a1b
--- /dev/null
+++ b/plugins/ie/installer/wix/WixVSExtension.dll
Binary files differ
diff --git a/plugins/ie/installer/wix/candle.exe b/plugins/ie/installer/wix/candle.exe
new file mode 100755
index 0000000..a5be152
--- /dev/null
+++ b/plugins/ie/installer/wix/candle.exe
Binary files differ
diff --git a/plugins/ie/installer/wix/candle.exe.config b/plugins/ie/installer/wix/candle.exe.config
new file mode 100644
index 0000000..bed32a7
--- /dev/null
+++ b/plugins/ie/installer/wix/candle.exe.config
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (c) Microsoft Corporation.  All rights reserved.
+-->
+<configuration>
+    <startup useLegacyV2RuntimeActivationPolicy="true">
+        <supportedRuntime version="v4.0" />
+        <supportedRuntime version="v2.0.50727" />
+    </startup>
+</configuration>
diff --git a/plugins/ie/installer/wix/darice.cub b/plugins/ie/installer/wix/darice.cub
new file mode 100644
index 0000000..dab4567
--- /dev/null
+++ b/plugins/ie/installer/wix/darice.cub
Binary files differ
diff --git a/plugins/ie/installer/wix/heat.exe b/plugins/ie/installer/wix/heat.exe
new file mode 100755
index 0000000..e5c9336
--- /dev/null
+++ b/plugins/ie/installer/wix/heat.exe
Binary files differ
diff --git a/plugins/ie/installer/wix/heat.exe.config b/plugins/ie/installer/wix/heat.exe.config
new file mode 100644
index 0000000..5d5aa30
--- /dev/null
+++ b/plugins/ie/installer/wix/heat.exe.config
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (c) Microsoft Corporation.  All rights reserved.
+-->
+<configuration>
+    <appSettings>
+        <add key="extensions" value="WixIIsExtension;WixUtilExtension;WixVSExtension"/>
+    </appSettings>
+    <startup useLegacyV2RuntimeActivationPolicy="true">
+        <supportedRuntime version="v4.0" />
+        <supportedRuntime version="v2.0.50727" />
+    </startup>
+</configuration>
diff --git a/plugins/ie/installer/wix/libiconv2.dll b/plugins/ie/installer/wix/libiconv2.dll
new file mode 100755
index 0000000..544dd92
--- /dev/null
+++ b/plugins/ie/installer/wix/libiconv2.dll
Binary files differ
diff --git a/plugins/ie/installer/wix/libintl3.dll b/plugins/ie/installer/wix/libintl3.dll
new file mode 100755
index 0000000..ec11e6b
--- /dev/null
+++ b/plugins/ie/installer/wix/libintl3.dll
Binary files differ
diff --git a/plugins/ie/installer/wix/light.exe b/plugins/ie/installer/wix/light.exe
new file mode 100755
index 0000000..d36e01e
--- /dev/null
+++ b/plugins/ie/installer/wix/light.exe
Binary files differ
diff --git a/plugins/ie/installer/wix/light.exe.config b/plugins/ie/installer/wix/light.exe.config
new file mode 100644
index 0000000..bed32a7
--- /dev/null
+++ b/plugins/ie/installer/wix/light.exe.config
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    Copyright (c) Microsoft Corporation.  All rights reserved.
+-->
+<configuration>
+    <startup useLegacyV2RuntimeActivationPolicy="true">
+        <supportedRuntime version="v4.0" />
+        <supportedRuntime version="v2.0.50727" />
+    </startup>
+</configuration>
diff --git a/plugins/ie/installer/wix/mspatchc.dll b/plugins/ie/installer/wix/mspatchc.dll
new file mode 100755
index 0000000..4720f1a
--- /dev/null
+++ b/plugins/ie/installer/wix/mspatchc.dll
Binary files differ
diff --git a/plugins/ie/installer/wix/regex2.dll b/plugins/ie/installer/wix/regex2.dll
new file mode 100755
index 0000000..f84a847
--- /dev/null
+++ b/plugins/ie/installer/wix/regex2.dll
Binary files differ
diff --git a/plugins/ie/installer/wix/sed.exe b/plugins/ie/installer/wix/sed.exe
new file mode 100755
index 0000000..42c2677
--- /dev/null
+++ b/plugins/ie/installer/wix/sed.exe
Binary files differ
diff --git a/plugins/ie/installer/wix/wconsole.dll b/plugins/ie/installer/wix/wconsole.dll
new file mode 100755
index 0000000..916b492
--- /dev/null
+++ b/plugins/ie/installer/wix/wconsole.dll
Binary files differ
diff --git a/plugins/ie/installer/wix/winterop.dll b/plugins/ie/installer/wix/winterop.dll
new file mode 100755
index 0000000..0385acd
--- /dev/null
+++ b/plugins/ie/installer/wix/winterop.dll
Binary files differ
diff --git a/plugins/ie/installer/wix/wix.dll b/plugins/ie/installer/wix/wix.dll
new file mode 100755
index 0000000..5057e35
--- /dev/null
+++ b/plugins/ie/installer/wix/wix.dll
Binary files differ
diff --git a/plugins/ie/oophm/oophm.sln b/plugins/ie/oophm/oophm.sln
index 106c6af..8885cd4 100644
--- a/plugins/ie/oophm/oophm.sln
+++ b/plugins/ie/oophm/oophm.sln
@@ -1,6 +1,6 @@
 
-Microsoft Visual Studio Solution File, Format Version 9.00
-# Visual Studio 2005
+Microsoft Visual Studio Solution File, Format Version 10.00
+# Visual Studio 2008
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "oophm", "oophm\oophm.vcproj", "{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}"
 EndProject
 Global
diff --git a/plugins/ie/oophm/oophm/dllmain.cpp b/plugins/ie/oophm/oophm/dllmain.cpp
index e7c6ada..eaa3ed9 100644
--- a/plugins/ie/oophm/oophm/dllmain.cpp
+++ b/plugins/ie/oophm/oophm/dllmain.cpp
@@ -15,7 +15,6 @@
  */
 
 // dllmain.cpp : Implementation of DllMain.
-
 #include "stdafx.h"
 #include "resource.h"
 #include "oophm_i.h"
@@ -29,9 +28,12 @@
 extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
 {
 #ifdef _MERGE_PROXYSTUB
-	if (!PrxDllMain(hInstance, dwReason, lpReserved))
-		return FALSE;
+        if (!PrxDllMain(hInstance, dwReason, lpReserved))
+                return FALSE;
 #endif
+        DisableThreadLibraryCalls(hInstance);
+
         AllowDialog::setHInstance(hInstance);
-	return _AtlModule.DllMain(dwReason, lpReserved); 
+
+        return _AtlModule.DllMain(dwReason, lpReserved); 
 }
diff --git a/plugins/ie/oophm/oophm/oophm.vcproj b/plugins/ie/oophm/oophm/oophm.vcproj
index 54ab6a5..9b8e095 100644
--- a/plugins/ie/oophm/oophm/oophm.vcproj
+++ b/plugins/ie/oophm/oophm/oophm.vcproj
@@ -1,11 +1,12 @@
 <?xml version="1.0" encoding="Windows-1252"?>
 <VisualStudioProject
 	ProjectType="Visual C++"
-	Version="8.00"
+	Version="9.00"
 	Name="oophm"
 	ProjectGUID="{EB69BDFE-9380-4C51-99E8-C3EB25AE36A2}"
 	RootNamespace="oophm"
 	Keyword="AtlProj"
+	TargetFrameworkVersion="131072"
 	>
 	<Platforms>
 		<Platform
@@ -82,11 +83,13 @@
 				RegisterOutput="true"
 				IgnoreImportLibrary="true"
 				AdditionalDependencies="comsuppw.lib ws2_32.lib"
-				OutputFile="..\..\prebuilt\$(ProjectName).dll"
+				OutputFile="..\..\prebuilt\$(PlatformName)\$(ProjectName).dll"
 				LinkIncremental="2"
 				ModuleDefinitionFile=".\oophm.def"
 				GenerateDebugInformation="true"
 				SubSystem="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
 				TargetMachine="1"
 			/>
 			<Tool
@@ -108,9 +111,6 @@
 				Name="VCAppVerifierTool"
 			/>
 			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
 				Name="VCPostBuildEventTool"
 			/>
 		</Configuration>
@@ -176,11 +176,13 @@
 				Name="VCLinkerTool"
 				IgnoreImportLibrary="true"
 				AdditionalDependencies="comsuppw.lib ws2_32.lib"
-				OutputFile="..\..\prebuilt\$(ProjectName)64.dll"
+				OutputFile="..\..\prebuilt\$(PlatformName)\$(ProjectName).dll"
 				LinkIncremental="2"
 				ModuleDefinitionFile=".\oophm.def"
 				GenerateDebugInformation="true"
 				SubSystem="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
 				TargetMachine="17"
 			/>
 			<Tool
@@ -202,9 +204,6 @@
 				Name="VCAppVerifierTool"
 			/>
 			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
 				Name="VCPostBuildEventTool"
 			/>
 		</Configuration>
@@ -270,13 +269,15 @@
 				RegisterOutput="true"
 				IgnoreImportLibrary="true"
 				AdditionalDependencies="comsuppw.lib ws2_32.lib"
-				OutputFile="..\..\prebuilt\$(ProjectName).dll"
+				OutputFile="..\..\prebuilt\$(PlatformName)\$(ProjectName).dll"
 				LinkIncremental="1"
 				ModuleDefinitionFile=".\oophm.def"
 				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
 				TargetMachine="1"
 			/>
 			<Tool
@@ -298,9 +299,6 @@
 				Name="VCAppVerifierTool"
 			/>
 			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
 				Name="VCPostBuildEventTool"
 			/>
 		</Configuration>
@@ -347,7 +345,6 @@
 				RuntimeLibrary="0"
 				UsePrecompiledHeader="0"
 				WarningLevel="3"
-				Detect64BitPortabilityProblems="true"
 				DebugInformationFormat="3"
 			/>
 			<Tool
@@ -366,13 +363,15 @@
 				Name="VCLinkerTool"
 				IgnoreImportLibrary="true"
 				AdditionalDependencies="comsuppw.lib ws2_32.lib"
-				OutputFile="..\..\prebuilt\$(ProjectName)64.dll"
+				OutputFile="..\..\prebuilt\$(PlatformName)\$(ProjectName).dll"
 				LinkIncremental="1"
 				ModuleDefinitionFile=".\oophm.def"
 				GenerateDebugInformation="true"
 				SubSystem="2"
 				OptimizeReferences="2"
 				EnableCOMDATFolding="2"
+				RandomizedBaseAddress="1"
+				DataExecutionPrevention="0"
 				TargetMachine="17"
 			/>
 			<Tool
@@ -394,9 +393,6 @@
 				Name="VCAppVerifierTool"
 			/>
 			<Tool
-				Name="VCWebDeploymentTool"
-			/>
-			<Tool
 				Name="VCPostBuildEventTool"
 			/>
 		</Configuration>
@@ -528,38 +524,6 @@
 			<File
 				RelativePath=".\stdafx.cpp"
 				>
-				<FileConfiguration
-					Name="Debug|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Debug|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|Win32"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="1"
-					/>
-				</FileConfiguration>
-				<FileConfiguration
-					Name="Release|x64"
-					>
-					<Tool
-						Name="VCCLCompilerTool"
-						UsePrecompiledHeader="1"
-					/>
-				</FileConfiguration>
 			</File>
 			<Filter
 				Name="common"
diff --git a/plugins/ie/oophm/oophm/plugin.htm b/plugins/ie/oophm/oophm/plugin.htm
index b3d8a77..1dac491 100644
--- a/plugins/ie/oophm/oophm/plugin.htm
+++ b/plugins/ie/oophm/oophm/plugin.htm
@@ -1,19 +1,82 @@
-<HTML>
-<HEAD>
-<TITLE>ATL 8.0 test page for object plugin</TITLE>
-</HEAD>
-<BODY>
-
-
-<OBJECT ID="plugin" CLASSID="CLSID:1D6156B6-002B-49E7-B5CA-C138FB843B4E"></OBJECT>
-
-<script>
-var p = document.getElementById("plugin");
-var b = p.connect("this", "sucks");
-var o = p.testObject();
-o.doSomething(42);
-
-
-</script>
-</BODY>
-</HTML>
+<HTML>  
+<HEAD>  
+<TITLE>GWT IE Plugin test page.</TITLE>  
+</HEAD>  
+<BODY>      
+<OBJECT ID="plugin" CLASSID="CLSID:1D6156B6-002B-49E7-B5CA-C138FB843B4E" border="2" width="150" height="150" standby="loading gwt plugin...">
+<div style="color:red; font-family:'Times New Roman'; font-size:20px;">
+<H1>Ooops!!! Failed to load gwt oophm plugin!</H1>
+<a><p>This is was you should have seen...<p>
+<img
+src="data:image/png;base64,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
+AElFTkSuQmCC" /></a>
+</div>
+</OBJECT>
+<script>  
+var plugin = document.getElementById("plugin");  
+var b = plugin.connect("this", "sucks");  
+var obj = plugin.testObject();  
+obj.doSomething(42);      
+</script>  
+</BODY>  
+</HTML> 
\ No newline at end of file
diff --git a/plugins/ie/prebuilt/Win32/oophm.dll b/plugins/ie/prebuilt/Win32/oophm.dll
new file mode 100755
index 0000000..9aef49f
--- /dev/null
+++ b/plugins/ie/prebuilt/Win32/oophm.dll
Binary files differ
diff --git a/plugins/ie/prebuilt/gwt-dev-plugin-x64.msi b/plugins/ie/prebuilt/gwt-dev-plugin-x64.msi
new file mode 100644
index 0000000..2c81f55
--- /dev/null
+++ b/plugins/ie/prebuilt/gwt-dev-plugin-x64.msi
Binary files differ
diff --git a/plugins/ie/prebuilt/gwt-dev-plugin-x86.msi b/plugins/ie/prebuilt/gwt-dev-plugin-x86.msi
new file mode 100644
index 0000000..7d54453
--- /dev/null
+++ b/plugins/ie/prebuilt/gwt-dev-plugin-x86.msi
Binary files differ
diff --git a/plugins/ie/prebuilt/oophm.dll b/plugins/ie/prebuilt/oophm.dll
deleted file mode 100755
index caf9780..0000000
--- a/plugins/ie/prebuilt/oophm.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/prebuilt/oophm64.dll b/plugins/ie/prebuilt/oophm64.dll
deleted file mode 100755
index b8707f0..0000000
--- a/plugins/ie/prebuilt/oophm64.dll
+++ /dev/null
Binary files differ
diff --git a/plugins/ie/prebuilt/x64/oophm.dll b/plugins/ie/prebuilt/x64/oophm.dll
new file mode 100755
index 0000000..c4a47e6
--- /dev/null
+++ b/plugins/ie/prebuilt/x64/oophm.dll
Binary files differ