summaryrefslogtreecommitdiff
path: root/setup_native/source/win32/customactions/rebase
diff options
context:
space:
mode:
Diffstat (limited to 'setup_native/source/win32/customactions/rebase')
-rw-r--r--setup_native/source/win32/customactions/rebase/makefile.mk82
-rw-r--r--setup_native/source/win32/customactions/rebase/rebase.cxx226
-rw-r--r--setup_native/source/win32/customactions/rebase/rebase.dxp1
3 files changed, 0 insertions, 309 deletions
diff --git a/setup_native/source/win32/customactions/rebase/makefile.mk b/setup_native/source/win32/customactions/rebase/makefile.mk
deleted file mode 100644
index fb1fc22a8..000000000
--- a/setup_native/source/win32/customactions/rebase/makefile.mk
+++ /dev/null
@@ -1,82 +0,0 @@
-#*************************************************************************
-#
-# DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
-#
-# Copyright 2000, 2010 Oracle and/or its affiliates.
-#
-# OpenOffice.org - a multi-platform office productivity suite
-#
-# This file is part of OpenOffice.org.
-#
-# OpenOffice.org is free software: you can redistribute it and/or modify
-# it under the terms of the GNU Lesser General Public License version 3
-# only, as published by the Free Software Foundation.
-#
-# OpenOffice.org is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU Lesser General Public License version 3 for more details
-# (a copy is included in the LICENSE file that accompanied this code).
-#
-# You should have received a copy of the GNU Lesser General Public License
-# version 3 along with OpenOffice.org. If not, see
-# <http://www.openoffice.org/license.html>
-# for a copy of the LGPLv3 License.
-#
-#*************************************************************************
-
-PRJ=..$/..$/..$/..
-PRJNAME=setup_native
-TARGET=rebase
-
-# --- Settings -----------------------------------------------------
-
-LIBTARGET=NO
-ENABLE_EXCEPTIONS=TRUE
-NO_DEFAULT_STL=TRUE
-DYNAMIC_CRT=
-USE_DEFFILE=TRUE
-MINGW_NODLL=YES
-
-.INCLUDE : settings.mk
-
-UWINAPILIB=
-
-# --- Files --------------------------------------------------------
-
-.IF "$(GUI)"=="WNT" && "$(WINDOWS_SDK_HOME)"!=""
-
-STDSHL += \
- $(ADVAPI32LIB)\
- $(SHELL32LIB)\
- $(MSILIB)
-
-.IF "$(COM)"=="GCC"
-STDSHL+= \
- $(KERNEL32LIB)\
- -lmsvcrt \
- $(PSDK_HOME)$/lib$/imagehlp.lib
-.ELSE
-STDSHL+= \
- Imagehlp.lib
-.ENDIF
-
-SHL1OBJS = \
- $(SLO)$/rebase.obj
-
-SHL1TARGET = $(TARGET)
-SHL1IMPLIB = i$(TARGET)
-
-SHL1DEF = $(MISC)$/$(SHL1TARGET).def
-SHL1BASE = 0x1c000000
-DEF1NAME=$(SHL1TARGET)
-SHL1DEPN=$(SHL1OBJS)
-DEF1EXPORTFILE=$(TARGET).dxp
-
-.ENDIF
-
-# --- Targets --------------------------------------------------------------
-
-.INCLUDE : target.mk
-
-# -------------------------------------------------------------------------
diff --git a/setup_native/source/win32/customactions/rebase/rebase.cxx b/setup_native/source/win32/customactions/rebase/rebase.cxx
deleted file mode 100644
index 2d22e3146..000000000
--- a/setup_native/source/win32/customactions/rebase/rebase.cxx
+++ /dev/null
@@ -1,226 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-#undef UNICODE
-#undef _UNICODE
-
-#pragma once
-
-#ifdef _MSC_VER
-#pragma warning(push, 1) /* disable warnings within system headers */
-#endif
-#define WIN32_LEAN_AND_MEAN
-#include <windows.h>
-#include <msiquery.h>
-#include <imagehlp.h>
-#include <tchar.h>
-#include <strsafe.h>
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
-#include <malloc.h>
-#include <time.h>
-#include <string>
-#include <boost/unordered_map.hpp>
-
-const DWORD PE_Signature = 0x00004550;
-typedef std::pair< std::string, bool > StringPair;
-typedef boost::unordered_map< std::string, bool > ExcludeLibsMap;
-
-#ifdef DEBUG
-static void OutputDebugStringFormat( LPCSTR pFormat, ... )
-{
- CHAR buffer[1024];
- va_list args;
-
- va_start( args, pFormat );
- StringCchVPrintfA( buffer, sizeof(buffer), pFormat, args );
- OutputDebugStringA( buffer );
-}
-#else
-static void OutputDebugStringFormat( LPCSTR, ... )
-{
-}
-#endif
-
-static bool IsValidHandle( HANDLE handle )
-{
- return NULL != handle && INVALID_HANDLE_VALUE != handle;
-}
-
-static std::string GetMsiProperty(MSIHANDLE handle, const std::string& sProperty)
-{
- std::string result;
- TCHAR szDummy[1] = TEXT("");
- DWORD nChars = 0;
-
- if (MsiGetProperty(handle, sProperty.c_str(), szDummy, &nChars) == ERROR_MORE_DATA)
- {
- DWORD nBytes = ++nChars * sizeof(TCHAR);
- LPTSTR buffer = reinterpret_cast<LPTSTR>(_alloca(nBytes));
- ZeroMemory( buffer, nBytes );
- MsiGetProperty(handle, sProperty.c_str(), buffer, &nChars);
- result = buffer;
- }
- return result;
-}
-
-static BOOL rebaseImage( const std::string& filePath, LPVOID address )
-{
- ULONG ulOldImageSize;
- ULONG_PTR lpOldImageBase;
- ULONG ulNewImageSize;
- ULONG_PTR lpNewImageBase = reinterpret_cast<ULONG_PTR>(address);
-
- BOOL bResult = ReBaseImage(
- (PSTR)filePath.c_str(),
- (PSTR)"",
- TRUE,
- FALSE,
- FALSE,
- 0,
- &ulOldImageSize,
- &lpOldImageBase,
- &ulNewImageSize,
- &lpNewImageBase,
- (ULONG)time(NULL) );
-
- return bResult;
-}
-
-static BOOL rebaseImage( MSIHANDLE /*handle*/, const std::string& sFilePath, LPVOID address )
-{
- std::string mystr;
- mystr = "Full file: " + sFilePath;
-
- BOOL bResult = rebaseImage( sFilePath, address );
-
- if ( !bResult )
- {
- OutputDebugStringFormat( "Rebasing library %s failed", mystr.c_str() );
- }
-
- return bResult;
-}
-
-static BOOL rebaseImagesInFolder( MSIHANDLE handle, const std::string& sPath, LPVOID address, ExcludeLibsMap& rExcludeMap )
-{
- std::string sDir = sPath;
- std::string sPattern = sPath + TEXT("*.dll");
- WIN32_FIND_DATA aFindFileData;
-
- HANDLE hFind = FindFirstFile( sPattern.c_str(), &aFindFileData );
- if ( IsValidHandle(hFind) )
- {
- BOOL fSuccess = false;
-
- do
- {
- std::string sFileName = aFindFileData.cFileName;
- if ( rExcludeMap.find( sFileName ) == rExcludeMap.end() )
- {
- OutputDebugStringFormat( "Rebase library: %s", sFileName.c_str() );
- std::string sLibFile = sDir + sFileName;
- rebaseImage( handle, sLibFile, address );
- }
- else
- {
- OutputDebugStringFormat( "Exclude library %s from rebase", sFileName.c_str() );
- }
-
- fSuccess = FindNextFile( hFind, &aFindFileData );
- }
- while ( fSuccess );
-
- FindClose( hFind );
- }
-
- return ERROR_SUCCESS;
-}
-
-static BOOL rebaseImages( MSIHANDLE handle, LPVOID pAddress, ExcludeLibsMap& rMap )
-{
- std::string sInstallPath = GetMsiProperty(handle, TEXT("INSTALLLOCATION"));
-
- std::string sBasisDir = sInstallPath + TEXT("Basis\\program\\");
- std::string sOfficeDir = sInstallPath + TEXT("program\\");
- std::string sUreDir = sInstallPath + TEXT("URE\\bin\\");
-
- BOOL bResult = rebaseImagesInFolder( handle, sBasisDir, pAddress, rMap );
- bResult &= rebaseImagesInFolder( handle, sOfficeDir, pAddress, rMap );
- bResult &= rebaseImagesInFolder( handle, sUreDir, pAddress, rMap );
-
- return bResult;
-}
-
-static BOOL IsServerSystem( MSIHANDLE /*handle*/ )
-{
- OSVERSIONINFOEX osVersionInfoEx;
- osVersionInfoEx.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX);
- GetVersionEx(reinterpret_cast<LPOSVERSIONINFO>(&osVersionInfoEx));
-
- if ( osVersionInfoEx.wProductType != VER_NT_WORKSTATION )
- {
- OutputDebugStringFormat( "Server system detected. No rebase necessary!" );
- return TRUE;
- }
- else
- {
- OutputDebugStringFormat( "Client system detected. Rebase necessary!" );
- return FALSE;
- }
-}
-
-static void InitExcludeFromRebaseList( MSIHANDLE handle, ExcludeLibsMap& rMap )
-{
- size_t nPos( 0 );
- const TCHAR cDelim = ',';
- std::string sLibsExcluded = GetMsiProperty(handle, TEXT("EXCLUDE_FROM_REBASE"));
-
- while ( nPos < sLibsExcluded.size() )
- {
- size_t nDelPos = sLibsExcluded.find_first_of( cDelim, nPos );
-
- std::string sExcludedLibName;
- if ( nDelPos != std::string::npos )
- {
- sExcludedLibName = sLibsExcluded.substr( nPos, nDelPos - nPos );
- nPos = nDelPos+1;
- }
- else
- {
- sExcludedLibName = sLibsExcluded.substr( nPos );
- nPos = sLibsExcluded.size();
- }
-
- if ( sExcludedLibName.size() > 0 )
- {
- OutputDebugStringFormat( "Insert library %s into exclude from rebase list", sExcludedLibName.c_str() );
- rMap.insert( StringPair( sExcludedLibName, true ));
- }
- }
-}
-
-extern "C" BOOL __stdcall RebaseLibrariesOnProperties( MSIHANDLE handle )
-{
- static LPVOID pDefault = reinterpret_cast<LPVOID>(0x10000000);
-
- OutputDebugStringFormat( "RebaseLibrariesOnProperties has been called" );
- std::string sDontOptimizeLibs = GetMsiProperty(handle, TEXT("DONTOPTIMIZELIBS"));
- if ( sDontOptimizeLibs.length() > 0 && sDontOptimizeLibs == "1" )
- {
- OutputDebugStringFormat( "Don't optimize libraries set. No rebase necessary!" );
- return TRUE;
- }
-
- if ( !IsServerSystem( handle ))
- {
- ExcludeLibsMap aExcludeLibsMap;
- InitExcludeFromRebaseList( handle, aExcludeLibsMap );
-
- return rebaseImages( handle, pDefault, aExcludeLibsMap );
- }
-
- return TRUE;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/setup_native/source/win32/customactions/rebase/rebase.dxp b/setup_native/source/win32/customactions/rebase/rebase.dxp
deleted file mode 100644
index 47ea23951..000000000
--- a/setup_native/source/win32/customactions/rebase/rebase.dxp
+++ /dev/null
@@ -1 +0,0 @@
-RebaseLibrariesOnProperties