Kaydet (Commit) d7b42845 authored tarafından Andras Timar's avatar Andras Timar Kaydeden (comit) Fridrich Strba

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
Reviewed-on: https://gerrit.libreoffice.org/3990Reviewed-by: 's avatarFridrich Strba <fridrich@documentfoundation.org>
Tested-by: 's avatarFridrich Strba <fridrich@documentfoundation.org>
üst c905068b
......@@ -50,14 +50,9 @@ if [ "$COM" = "MSC" -a "$CPUNAME" = "INTEL" ]; then
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
......@@ -66,11 +61,6 @@ if [ "$COM" = "MSC" ]; 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
# Local Variables:
......
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.
......@@ -36,6 +36,10 @@ mkdir: %_DEST%\inc\external\wine
..\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
......
......@@ -313,7 +313,7 @@ sub msvc_copy_dlls($$)
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'});
......
......@@ -87,26 +87,4 @@ End
#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
......@@ -95,3 +95,48 @@ File gid_File_Lib_Shlxtmsi
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
......@@ -51,5 +51,9 @@ Module gid_Module_Optional_Winexplorerext_x64
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
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment