diff --git a/scripts/packageBinaries.pl b/scripts/packageBinaries.pl
index b329a8326d22464d69616792c832e74ad3a3961c..5ad59e8ea8edc40bf7c4f66ce1343b92d1f1ea76 100644
--- a/scripts/packageBinaries.pl
+++ b/scripts/packageBinaries.pl
@@ -230,7 +230,7 @@ if ($platform eq "win64bit" )
 
     if ($opt_m =~ m/icu/i) {
         pchdir ("$XERCESCROOT\\src\\xercesc\\util\\MsgLoaders\\ICU\\resources");    	
-        psystem("copy XercesMessages.DLL $BUILDDIR");
+        psystem("copy XercesMessages*.DLL $BUILDDIR");
         pchdir ($targetdir);        
     }
     
@@ -334,7 +334,7 @@ if ($platform eq "win64bit" )
         # Copy the Resouce Bundle for ICUMsgLoader
         if ( $opt_m =~ m/icu/i) {
             psystem("copy /y $XERCESCROOT\\src\\xercesc\\util\\MsgLoaders\\ICU\\resources\\XercesMessage*.res $targetdir\\msg");
-            psystem("copy /y $XERCESCROOT\\src\\xercesc\\util\\MsgLoaders\\ICU\\resources\\XercesMessages*.dll $targetdir\\bin");
+            psystem("copy /y $XERCESCROOT\\src\\xercesc\\util\\MsgLoaders\\ICU\\resources\\XercesMessages*.DLL $targetdir\\bin");
             psystem("copy /y $XERCESCROOT\\src\\xercesc\\util\\MsgLoaders\\ICU\\resources\\XercesMessages*.lib $targetdir\\lib");
         }        	
 
@@ -635,7 +635,7 @@ if ($platform =~ m/Windows/  || ($platform =~ m/CYGWIN/ && !($opt_c =~ m/gcc/)))
 
     if ($opt_m =~ m/icu/i) {
         pchdir ("$XERCESCROOT/src/xercesc/util/MsgLoaders/ICU/resources");    	
-        psystem("cp -fv XercesMessages*.dll $BUILDDIR");
+        psystem("cp -fv XercesMessages*.DLL $BUILDDIR");
         psystem("cp -fv XercesMessages*.lib $BUILDDIR");
         pchdir ($targetdir);                
     }
@@ -739,7 +739,7 @@ if ($platform =~ m/Windows/  || ($platform =~ m/CYGWIN/ && !($opt_c =~ m/gcc/)))
         # Copy the Resouce Bundle for ICUMsgLoader
         if ( $opt_m =~ m/icu/i) {
             psystem("cp -fv $XERCESCROOT/src/xercesc/util/MsgLoaders/ICU/resources/XercesMessages*.res $targetdir/msg");
-            psystem("cp -fv $XERCESCROOT/src/xercesc/util/MsgLoaders/ICU/resources/XercesMessages*.dll $targetdir/bin");
+            psystem("cp -fv $XERCESCROOT/src/xercesc/util/MsgLoaders/ICU/resources/XercesMessages*.DLL $targetdir/bin");
             psystem("cp -fv $XERCESCROOT/src/xercesc/util/MsgLoaders/ICU/resources/XercesMessages*.lib $targetdir/lib");
         }        	
 
diff --git a/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp b/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp
index fc8aeeddbf7dd6e83f6713068665536d76812690..140bc15707afc76defe6e82d91ce7c9d1cf9f567 100644
--- a/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp
+++ b/src/xercesc/util/MsgLoaders/ICU/ICUMsgLoader.cpp
@@ -56,6 +56,9 @@
 
 /*
  * $Log$
+ * Revision 1.16  2003/03/17 19:28:05  peiyongz
+ * Build versioned XercesMessages on Windows
+ *
  * Revision 1.15  2003/03/09 16:41:20  peiyongz
  * PanicHandler
  *
@@ -164,7 +167,11 @@ XERCES_CPP_NAMESPACE_BEGIN
  *  will then  be able to fetch resources from the data.
  */
 
+#if defined(_WIN32) || defined(WIN32)
+extern "C" void U_IMPORT *XercesMessages2_3_0_dat;
+#else
 extern "C" void U_IMPORT *XercesMessages_dat;
+#endif
 
 /* 
  *  Tell ICU where our resource data is located in memory. The data lives in the XercesMessages dll, and we just
@@ -184,7 +191,11 @@ static void setAppData()
     {
         setAppDataDone = true;
         UErrorCode err = U_ZERO_ERROR;
+#if defined(_WIN32) || defined(WIN32)
+        udata_setAppData("XercesMessages", &XercesMessages2_3_0_dat, &err);
+#else
         udata_setAppData("XercesMessages", &XercesMessages_dat, &err);
+#endif        
         if (U_SUCCESS(err))
         {
     	    setAppDataOK = true;
diff --git a/src/xercesc/util/MsgLoaders/ICU/resources/resources.mak b/src/xercesc/util/MsgLoaders/ICU/resources/resources.mak
index 608c7fc195be5d36edb68a7e42025b60444c004d..20bd9831a40b37e08a3f1973e09503e5bdfcfc00 100644
--- a/src/xercesc/util/MsgLoaders/ICU/resources/resources.mak
+++ b/src/xercesc/util/MsgLoaders/ICU/resources/resources.mak
@@ -13,8 +13,7 @@
 #           the corresponding .res file must be added to this list,
 #    . AND to the file res-file-list.txt
 #
-#  If built versioned dll/lib directly, then we need to change the
-#  the symbol, XercesMessages_dat to XercesMessages2_2_0_dat.
+#  keep synchronous with ICUMsgLoader.cpp
 #
 
 # for VER
@@ -23,10 +22,8 @@ include ..\..\..\..\..\..\version.incl
 RESFILES= en_US.res 
 
 PKGNAME       = XercesMessages
-TARGET_DLL    = $(PKGNAME).DLL
-TARGET_LIB    = $(PKGNAME).lib
-TAR_VER_DLL   = $(PKGNAME)$(VER).dll
-TAR_VER_LIB   = $(PKGNAME)$(VER).lib
+TARGET_DLL    = $(PKGNAME)$(VER).DLL
+TARGET_LIB    = $(PKGNAME)$(VER).lib
 
 GENRB    = $(ICUROOT)\bin\genrb.exe
 PKGDATA  = $(ICUROOT)\bin\pkgdata
@@ -53,6 +50,5 @@ REN      = ren
 all: $(TARGET_DLL)
 
 $(TARGET_DLL): $(RESFILES)
-	$(PKGDATA) --name $(PKGNAME) -v -O R:$(ICUROOT) --mode dll -d . res-file-list.txt
-	$(REN) $(TARGET_DLL) $(TAR_VER_DLL)
-	$(REN) $(TARGET_LIB) $(TAR_VER_LIB)
+	$(PKGDATA) --name $(PKGNAME)$(VER) -v -O R:$(ICUROOT) --mode dll -d . res-file-list.txt
+