diff --git a/scripts/packageBinaries.pl b/scripts/packageBinaries.pl
index 6d2d8efaee62b3fa7d6256d3592b083c9c2d562c..4cf8c5de98eb061acbcc98a3802ef292abdc13d3 100644
--- a/scripts/packageBinaries.pl
+++ b/scripts/packageBinaries.pl
@@ -122,7 +122,9 @@ if ($platform =~ m/Windows/) {
 	    chdir ("$ICUROOT/source/allinone");
 	    print "Executing: msdev allinone.dsw /MAKE \"all - $platformname $buildmode\" /REBUILD inside $ICUROOT/source/allinone";
 	    system("msdev allinone.dsw /MAKE \"all - $platformname $buildmode\" /REBUILD");
-	}
+
+	    change_windows_project_for_ICU("$XERCESCROOT/Projects/Win32/VC6/xerces-all/XercesLib/XercesLib.dsp");
+        }
 
         # Clean up all the dependency files, causes problems for nmake
 	# Also clean up all MSVC-generated project files that just cache the IDE state
@@ -483,3 +485,33 @@ if ( ($platform =~ m/AIX/i)    || ($platform =~ m/HP-UX/i) ||
 }
 
 
+sub change_windows_project_for_ICU()
+{
+        my ($thefile) = @_;
+        print "\nConverting Windows Xerces library project ($thefile) for ICU usage...";
+        my $thefiledotbak = $thefile . ".bak";
+        rename ($thefile, $thefiledotbak);
+
+        open (FIZZLE, $thefiledotbak);
+        open (FIZZLEOUT, ">$thefile");
+        while ($line = <FIZZLE>) {
+		if ($line =~ m/Transcoders\\Win32\\Win32TransService\.cpp/g) {
+			while ($line = <FIZZLE>) { # read the next line
+				last if ($line =~ m/^SOURCE/g);
+			}
+		}
+
+                $line =~ s/\/D "PROJ_XMLPARSER"/\/I \"\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\icu\\include" \/D "PROJ_XMLPARSER"/g;
+                $line =~ s/XML_USE_WIN32_TRANSCODER/XML_USE_ICU_TRANSCODER/g;
+		$line =~ s/Release\/xerces-c_1.lib"/Release\/xerces-c_1.lib" \/libpath:"\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\icu\\lib\\Release"/g;
+		$line =~ s/Debug\/xerces-c_1.lib"/Debug\/xerces-c_1.lib" \/libpath:"\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\\.\.\\icu\\lib\\Debug"/g;
+                $line =~ s/user32\.lib/user32\.lib icuuc\.lib/g;
+                $line =~ s/Transcoders\\Win32\\Win32TransService2\.cpp/Transcoders\\ICU\\ICUTransService\.cpp/g;
+                print FIZZLEOUT $line;
+        }
+        close (FIZZLEOUT);
+        close (FIZZLE);
+        unlink ($thefiledotbak);
+}
+
+
diff --git a/scripts/packageSources.pl b/scripts/packageSources.pl
index 65a4bc22ca5fadf6cc59b73e9272ce7715540101..7f426165b1d4725df67c2d8a69c6fb370b33c8b9 100644
--- a/scripts/packageSources.pl
+++ b/scripts/packageSources.pl
@@ -28,17 +28,16 @@ if (!length($XERCESCROOT) || !length($OUTPUTDIR)) {
 
 # We need ICUROOT only if we intend to use ICU for transcoding or message loading
 # As of Version 3, this is not mandatory any more.
-# if (!length($ICUROOT)) {
-#        print "You have not defined your International directory.\n You must set an environment variable called ICUROOT to proceed.\n";
-#        exit (-1);
-# }
+if (length($ICUROOT) > 0) {
+       print "Using $ICUROOT as the ICU root directory.\n";
+}
 
 #Fix the backslashes on the Windows platform
 $XERCESCROOT =~ s/\\/\//g;
 $ICUROOT =~ s/\\/\//g;
 
-# Read the target version from the file $XERCESCROOT/src/util/XML4CDefs.hpp
-$versionfile = "$XERCESCROOT/src/util/XML4CDefs.hpp";
+# Read the target version from the file $XERCESCROOT/src/util/XercesDefs.hpp
+$versionfile = "$XERCESCROOT/src/util/XercesDefs.hpp";
 $openresult = open (VERSIONFILE, "<$versionfile");
 
 if ($openresult == 0) {
@@ -126,6 +125,9 @@ $docppfilelist = $docppfilelist . " $XERCESCROOT/src/parsers/SAXParser.hpp";
 system ("doc++ -d $XERCESCROOT/doc/html/apiDocs -B $XERCESCROOT/doc/html/apiDocs/tail.html -a -G -k -H -S $docppfilelist");
 
 # Now create the User documentation from the XML sources
+if (length($ICUROOT) > 0) {
+	change_documentation_entities("$XERCESCROOT/doc/entities.ent");
+}
 chdir ("$XERCESCROOT");
 system("createdocs.bat");  # You must have Xerces-Java and Stylebook installed in addition to JDK1.2.2
 
@@ -303,3 +305,30 @@ sub deleteCVSdirs {
 		}
 	}
 }
+
+sub change_documentation_entities()
+{
+        my ($thefile) = @_;
+        print "\nConverting documentation entities ($thefile) for ICU usage...";
+        my $thefiledotbak = $thefile . ".bak";
+        rename ($thefile, $thefiledotbak);
+
+        open (FIZZLE, $thefiledotbak);
+        open (FIZZLEOUT, ">$thefile");
+        while ($line = <FIZZLE>) {
+                $line =~ s/"Xerces C\+\+ Parser"/"XML for C\+\+ Parser"/g;
+                $line =~ s/"Xerces-C"/"XML4C"/g;
+                $line =~ s/"1\.1\.0"/"3\.1\.0"/g;
+                $line =~ s/"Xerces"/"XML4C"/g;
+                $line =~ s/"xerces-c-1_1_0"/"xml4c-3_1_0"/g;
+                $line =~ s/"xerces-c-src-1_1_0"/"xml4c-src-3_1_0"/g;
+                $line =~ s/"xerces-c_1"/"xerces-c_1"/g;
+                $line =~ s/xerces-dev\@xml\.apache\.org/xml4c\@us\.ibm\.com/g;
+                $line =~ s/xml\.apache\.org\/dist/www\.alphaworks\.ibm\.com\/tech\/xml4c/g;
+                print FIZZLEOUT $line;
+        }
+        close (FIZZLEOUT);
+        close (FIZZLE);
+        unlink ($thefiledotbak);
+}
+