[PATCH libreoffice-4-0] make 64-bit shell extensions work, put 64-bit VC runtime in ...

Andras Timar (via Code Review) gerrit at gerrit.libreoffice.org
Tue May 21 04:09:17 PDT 2013


Hi,

I have submitted a patch for review:

    https://gerrit.libreoffice.org/3990

To pull it, you can do:

    git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/90/3990/1

make 64-bit shell extensions work, put 64-bit VC runtime in the same dir

Unlike in case of msvcr90.dll, which went to WinSxS, msvcr100.dll is installed
to the "system32" folder. Windows installer automatically replaces it to
SysWOW64. The problem is that this way 64-bit dlls end up in the wrong directory.
They conflict with the 32-bit dlls, and will not be installed. Therefore
64-bit shell extensions will not work, unless the 64-bit VC runtime is
installed from other source. It is not possible to install both 32-bit and
64-bit VC Runtime with merge modules in case of VS 2010 and VS 2012.
For the 64-bit shell extensions, we can install the runtime dlls next to the files.

Conflicts:

	scp2/source/ooo/vc_redist.scp

Change-Id: I47060f8ff764ca1156596139ecbec003f964bc60
---
M download
M external/msvcp100/README_msvcX100.dll
M external/prj/d.lst
M oowintool
M scp2/source/ooo/vc_redist.scp
M scp2/source/winexplorerext/file_winexplorerext.scp
M scp2/source/winexplorerext/module_winexplorerext.scp
7 files changed, 58 insertions(+), 37 deletions(-)



diff --git a/download b/download
index 985443c..a04d1f4 100755
--- a/download
+++ b/download
@@ -50,14 +50,9 @@
 fi
 
 if [ "$COM" = "MSC" ]; then
-    if [ "$CPUNAME" = "INTEL" ]; then
-        ver=""
-    else
-        ver="-64"
-    fi
     # use oowintool to copy CRT dlls and manifest
-    if ! ./oowintool --msvc-copy-dlls"$ver" ./external/msvcp ; then
-       echo "oowintool failed to copy CRT"
+    if ! ./oowintool --msvc-copy-dlls-64 ./external/msvcp ; then
+       echo "oowintool failed to copy 64-bit CRT"
        exit 1
     fi
 
@@ -65,11 +60,6 @@
     if ! ./oowintool --msvc-copy-msms"$ver" ./external/msm"$VCVER" ; then
        echo "oowintool failed to copy merge modules"
        exit 1
-    fi
-    if [ "$CPUNAME" = "INTEL" ]; then
-        if ! ./oowintool --msvc-copy-msms-64 ./external/msm"$VCVER" ; then
-           echo "WARNING: oowintool failed to copy x64 merge modules, installation will lack the 64-bit Explorer extension"
-        fi
     fi
 fi
 
diff --git a/external/msvcp100/README_msvcX100.dll b/external/msvcp100/README_msvcX100.dll
index a1b0e73..ada64ed 100644
--- a/external/msvcp100/README_msvcX100.dll
+++ b/external/msvcp100/README_msvcX100.dll
@@ -1,2 +1,2 @@
-Put msvcp100.dll, msvcr100.dll in this directory for Windows builds using a
+Put 64-bit msvcp100.dll, msvcr100.dll in this directory for Windows builds using a
 VS 2010 / VC 10.0 compiler.
diff --git a/external/prj/d.lst b/external/prj/d.lst
index 7ee2582..c357edc 100644
--- a/external/prj/d.lst
+++ b/external/prj/d.lst
@@ -36,6 +36,10 @@
 ..\msvcp90\msvcr90*.dll %_DEST%\bin
 ..\msvcp90\Microsoft.VC90.CRT.manifest %_DEST%\bin\Microsoft.VC90.CRT.manifest
 ..\msvcp90\Microsoft.VC90.DebugCRT.manifest %_DEST%\bin\Microsoft.VC90.DebugCRT.manifest
+..\msvcp100\msvcp100*.dll %_DEST%\bin
+..\msvcp100\msvcr100*.dll %_DEST%\bin
+..\msvcp110\msvcp110*.dll %_DEST%\bin
+..\msvcp110\msvcr110*.dll %_DEST%\bin
 ..\msm90\*.msm %_DEST%\bin
 ..\msm100\*.msm %_DEST%\bin
 ..\msm110\*.msm %_DEST%\bin
diff --git a/oowintool b/oowintool
index 26221f0..6f5ab7c 100755
--- a/oowintool
+++ b/oowintool
@@ -313,7 +313,7 @@
     my $srcdir = (cygpath ($ver->{'product_dir'}, 'w', 'u') . '/' .
           $ver->{'dll_path'});
 
-    $srcdir =~ s/x86/amd64/ if ($arch eq 'amd64');
+    $srcdir =~ s|/x86/|/x64/| if ($arch eq 'amd64');
 
     copy_dll ($srcdir, "msvcp" . $ver->{'dll_suffix'} . ".dll",
           $dest . $ver->{'dll_suffix'});
diff --git a/scp2/source/ooo/vc_redist.scp b/scp2/source/ooo/vc_redist.scp
index fa7d1c2..82cd0d0 100644
--- a/scp2/source/ooo/vc_redist.scp
+++ b/scp2/source/ooo/vc_redist.scp
@@ -87,26 +87,4 @@
 
 #endif
 
-#if defined(WITH_VC100_REDIST)
-
-MergeModule gid_MergeModule_Microsoft_VC100_CRT_x64
-    Feature = gm_Root;
-    Name = "Microsoft_VC100_CRT_x64.msm";
-    RootDir = "TARGETDIR";
-    ComponentCondition = "VC_REDIST=1";
-End
-
-#endif
-
-#if defined(WITH_VC110_REDIST)
-
-MergeModule gid_MergeModule_Microsoft_VC110_CRT_x64
-    Feature = gm_Root;
-    Name = "Microsoft_VC110_CRT_x64.msm";
-    RootDir = "TARGETDIR";
-    ComponentCondition = "VC_REDIST=1";
-End
-
-#endif
-
 #endif
diff --git a/scp2/source/winexplorerext/file_winexplorerext.scp b/scp2/source/winexplorerext/file_winexplorerext.scp
index f2a2a89..1aadacf 100644
--- a/scp2/source/winexplorerext/file_winexplorerext.scp
+++ b/scp2/source/winexplorerext/file_winexplorerext.scp
@@ -95,3 +95,48 @@
     Dir = SCP2_OOO_BIN_DIR;
     Name = "shlxtmsi.dll";
 End
+
+#ifdef BUILD_X64
+
+#if defined(WITH_VC100_REDIST)
+
+File gid_File_Lib_Msvcr100
+    LIB_FILE_BODY;
+    Styles = (PACKED);
+    Dir = gid_Dir_Shlxthdl;
+    Name = "msvcr100.dll";
+    ComponentCondition = "VersionNT64";
+End
+
+File gid_File_Lib_Msvcp100
+    LIB_FILE_BODY;
+    Styles = (PACKED);
+    Dir = gid_Dir_Shlxthdl;
+    Name = "msvcp100.dll";
+    ComponentCondition = "VersionNT64";
+End
+
+#endif
+
+#if defined(WITH_VC110_REDIST)
+
+File gid_File_Lib_Msvcr110
+    LIB_FILE_BODY;
+    Styles = (PACKED);
+    Dir = gid_Dir_Shlxthdl;
+    Name = "msvcr110.dll";
+    ComponentCondition = "VersionNT64";
+End
+
+File gid_File_Lib_Msvcp110
+    LIB_FILE_BODY;
+    Styles = (PACKED);
+    Dir = gid_Dir_Shlxthdl;
+    Name = "msvcp110.dll";
+    ComponentCondition = "VersionNT64";
+End
+
+#endif
+
+#endif
+
diff --git a/scp2/source/winexplorerext/module_winexplorerext.scp b/scp2/source/winexplorerext/module_winexplorerext.scp
index 3932e4f..6756a30 100644
--- a/scp2/source/winexplorerext/module_winexplorerext.scp
+++ b/scp2/source/winexplorerext/module_winexplorerext.scp
@@ -51,5 +51,9 @@
     Dirs = (gid_Dir_Shlxthdl);
     Files = (gid_File_Lib_Shlxthdl64,
              gid_File_Lib_OOoFilt64,
-             gid_File_Lib_PropertyHdl64);
+             gid_File_Lib_PropertyHdl64,
+             gid_File_Lib_Msvcp100,
+             gid_File_Lib_Msvcr100,
+             gid_File_Lib_Msvcp110,
+             gid_File_Lib_Msvcr110);
 End

-- 
To view, visit https://gerrit.libreoffice.org/3990
To unsubscribe, visit https://gerrit.libreoffice.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I47060f8ff764ca1156596139ecbec003f964bc60
Gerrit-PatchSet: 1
Gerrit-Project: core
Gerrit-Branch: libreoffice-4-0
Gerrit-Owner: Andras Timar <atimar at suse.com>



More information about the LibreOffice mailing list