diff options
author | Andras Timar <atimar@suse.com> | 2013-01-28 21:56:48 +0100 |
---|---|---|
committer | Andras Timar <atimar@suse.com> | 2013-01-30 15:24:57 +0100 |
commit | e0ea85f61a5914508921b5e73119516219afa158 (patch) | |
tree | 3b81f66b0ffe7fa73226fc7b45652356dc99b615 /setup_native/source | |
parent | 1ba8986446dbaa77c9aed6d141ee99da74bf1afb (diff) |
we don't build language packs on Windows
Change-Id: I672886764e9451a983b823ec3666f126b758bd1e
Diffstat (limited to 'setup_native/source')
4 files changed, 0 insertions, 448 deletions
diff --git a/setup_native/source/win32/customactions/languagepacks/exports.dxp b/setup_native/source/win32/customactions/languagepacks/exports.dxp deleted file mode 100644 index 8309a1be9bdc..000000000000 --- a/setup_native/source/win32/customactions/languagepacks/exports.dxp +++ /dev/null @@ -1,4 +0,0 @@ -SetProductInstallationPath -RegisterLanguagePack -GetUserInstallMode - diff --git a/setup_native/source/win32/customactions/languagepacks/lngpckinsthelper.cxx b/setup_native/source/win32/customactions/languagepacks/lngpckinsthelper.cxx deleted file mode 100644 index 9ddeae00f34e..000000000000 --- a/setup_native/source/win32/customactions/languagepacks/lngpckinsthelper.cxx +++ /dev/null @@ -1,196 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#include <msiquery.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#include <malloc.h> -#include <tchar.h> -#include <string> -#include <stdexcept> -#include <vector> - -class RegistryKeyGuard -{ -public: - RegistryKeyGuard(HKEY hkey = 0) : - hkey_(hkey) - { - } - - ~RegistryKeyGuard() - { - if (hkey_) - RegCloseKey(hkey_); - } -private: - HKEY hkey_; - -private: - RegistryKeyGuard(const RegistryKeyGuard&); - RegistryKeyGuard& operator=(const RegistryKeyGuard&); -}; - -typedef std::vector<TCHAR> CharacterBuffer_t; - -/* throws std::runtime_error when the value "Path" could - not be found or contains an empty string or is not of - type REG_SZ. All such conditions are invalid for a - properly installed product. */ -std::string FindProductInstallationPath(HKEY hkey) -{ - DWORD nSubKeys; - DWORD lLongestSubKey; - - if (RegQueryInfoKey(hkey, NULL, NULL, NULL, &nSubKeys, &lLongestSubKey, NULL, NULL, NULL, NULL, NULL, NULL) != - ERROR_SUCCESS) - throw std::runtime_error("Cannot query info for registery key"); - - CharacterBuffer_t buff(lLongestSubKey + 1); - - for (DWORD i = 0; i < nSubKeys; i++) - { - buff[0] = 0; - LONG ret = RegEnumKey(hkey, i, &buff[0], buff.size()); - - if ((ret != ERROR_SUCCESS) && (ret != ERROR_MORE_DATA)) - throw std::runtime_error("Error enumerating registry key"); - - HKEY hSubKey; - if (RegOpenKey(hkey, &buff[0], &hSubKey) != ERROR_SUCCESS) - continue; - - RegistryKeyGuard guard(hSubKey); - - DWORD type; - TCHAR pbuff[MAX_PATH]; - DWORD size = sizeof(pbuff); - if ((RegQueryValueEx( - hSubKey, TEXT("Path"), NULL, &type, reinterpret_cast<LPBYTE>(pbuff), &size) != ERROR_SUCCESS) || - (type != REG_SZ)) - continue; - - std::string path(pbuff); - std::string::size_type idx = path.rfind("program\\soffice.exe"); - if (idx != std::string::npos) - return path.substr(0, idx); - } // for - - throw std::runtime_error("No valid product path found"); -} - -UINT GetInstallProperty(MSIHANDLE handle, LPCTSTR name, CharacterBuffer_t* buffer) -{ - DWORD size = buffer->size(); - UINT ret = MsiGetProperty(handle, name, &(*buffer)[0], &size); - - if (ret == ERROR_MORE_DATA) - { - buffer->resize(size + 1); - size = buffer->size(); - ret = MsiGetProperty(handle, name, &(*buffer)[0], &size); - } - return ret; -} - -/* - Try to find the installation path to an already installed product. - The installation path will be written in the Windows registry - during the installation. There may exist different products in - parallel e.g. StarOffice, StarSuite, OpenOffice.org. It will be - searched in this order for an installed product. If a product - will be found the path to the product will be set in the property - "INSTALLLOCATION" else nothing will be done. -*/ -extern "C" UINT __stdcall SetProductInstallationPath(MSIHANDLE handle) -{ - //MessageBox(NULL, TEXT("SetProductInstallationPath"), TEXT("Language Pack Installation Helper"), MB_OK | MB_ICONINFORMATION); - - try - { - CharacterBuffer_t regKeyProdPath(MAX_PATH); - - GetInstallProperty(handle, TEXT("REGKEYPRODPATH"), ®KeyProdPath); - - HKEY hKey; - if ((RegOpenKey(HKEY_CURRENT_USER, ®KeyProdPath[0], &hKey) == ERROR_SUCCESS) || - (RegOpenKey(HKEY_LOCAL_MACHINE, ®KeyProdPath[0], &hKey) == ERROR_SUCCESS)) - { - RegistryKeyGuard guard(hKey); - std::string path = FindProductInstallationPath(hKey); - MsiSetProperty(handle, TEXT("INSTALLLOCATION"), path.c_str()); - } - } - catch(std::runtime_error&) - { - } - return ERROR_SUCCESS; -} - -void MakeCfgimportCommandLine(CharacterBuffer_t* productPath) -{ - char* p = &(*productPath)[0] + lstrlen(&(*productPath)[0]) - 1; - - if (*p != '\\') - lstrcat(&(*productPath)[0], "\\program\\configimport.exe --spool"); - else - lstrcat(&(*productPath)[0], "program\\configimport.exe --spool"); -} - -/* - Calls configimport.exe --spool -*/ -extern "C" UINT __stdcall RegisterLanguagePack(MSIHANDLE handle) -{ - //MessageBox(NULL, TEXT("RegisterLanguagePack"), TEXT("Language Pack Installation Helper"), MB_OK | MB_ICONINFORMATION); - - CharacterBuffer_t productPath(MAX_PATH); - GetInstallProperty(handle, TEXT("INSTALLLOCATION"), &productPath); - MakeCfgimportCommandLine(&productPath); - - STARTUPINFO si; - ZeroMemory(&si, sizeof(si)); - si.cb = sizeof(si); - - PROCESS_INFORMATION pi; - ZeroMemory(&pi, sizeof(pi)); - - if (CreateProcess( - NULL, &productPath[0], NULL, NULL, - FALSE, CREATE_NO_WINDOW | NORMAL_PRIORITY_CLASS, NULL, - NULL, &si, &pi)) - { - // Wait until child process exits. - WaitForSingleObject(pi.hProcess, INFINITE); - - // Close process and thread handles. - CloseHandle(pi.hProcess); - CloseHandle(pi.hThread); - } - return ERROR_SUCCESS; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/languagepacks/makefile.mk b/setup_native/source/win32/customactions/languagepacks/makefile.mk deleted file mode 100644 index 1f54f3545088..000000000000 --- a/setup_native/source/win32/customactions/languagepacks/makefile.mk +++ /dev/null @@ -1,73 +0,0 @@ -# -# This file is part of the LibreOffice project. -# -# This Source Code Form is subject to the terms of the Mozilla Public -# License, v. 2.0. If a copy of the MPL was not distributed with this -# file, You can obtain one at http://mozilla.org/MPL/2.0/. -# -# This file incorporates work covered by the following license notice: -# -# Licensed to the Apache Software Foundation (ASF) under one or more -# contributor license agreements. See the NOTICE file distributed -# with this work for additional information regarding copyright -# ownership. The ASF licenses this file to you under the Apache -# License, Version 2.0 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.apache.org/licenses/LICENSE-2.0 . -# - -PRJ=..$/..$/..$/.. -PRJNAME=setup_native -TARGET=lngpckinsthlp - - -# --- Settings ----------------------------------------------------- - -ENABLE_EXCEPTIONS=TRUE -NO_DEFAULT_STL=TRUE -DYNAMIC_CRT= -USE_DEFFILE=TRUE - -.INCLUDE : settings.mk - -# --- Files -------------------------------------------------------- - -.IF "$(OS)"=="WNT" && "$(WINDOWS_SDK_HOME)"!="" - -UWINAPILIB= - -SLOFILES = $(SLO)$/lngpckinsthelper.obj \ - $(SLO)$/respintest.obj - -STDSHL+= \ - $(ADVAPI32LIB) \ - $(MSILIB) \ - $(SHELL32LIB) - -SHL1OBJS = $(SLOFILES) \ - $(SLO)$/seterror.obj - -.IF "$(COM)"=="GCC" -STDSHL+= \ - $(KERNEL32LIB)\ - -lmsvcrt -.ENDIF - - -SHL1OBJS = $(SLOFILES) \ - $(SLO)$/seterror.obj - -SHL1TARGET = $(TARGET) -SHL1IMPLIB = i$(TARGET) - -SHL1DEF = $(MISC)$/$(SHL1TARGET).def -SHL1DEPN = $(SLB)$/$(TARGET).lib -SHL1BASE = 0x1c000000 -DEF1NAME=$(SHL1TARGET) -DEF1EXPORTFILE=exports.dxp - -.ENDIF - -# --- Targets -------------------------------------------------------------- - -.INCLUDE : target.mk diff --git a/setup_native/source/win32/customactions/languagepacks/respintest.cxx b/setup_native/source/win32/customactions/languagepacks/respintest.cxx deleted file mode 100644 index f757a880f912..000000000000 --- a/setup_native/source/win32/customactions/languagepacks/respintest.cxx +++ /dev/null @@ -1,175 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -#undef UNICODE -#undef _UNICODE - -#define _WIN32_WINDOWS 0x0410 - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#include <msiquery.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#include <malloc.h> -#include <assert.h> - -#include <tchar.h> -#include <string> -#include <sal/macros.h> - -#include <systools/win32/uwinapi.h> -#include <../tools/seterror.hxx> - -using namespace std; - -namespace -{ - string GetMsiProperty(MSIHANDLE handle, const string& sProperty) - { - 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; - } - - inline bool IsSetMsiProperty(MSIHANDLE handle, const string& sProperty) - { - return (GetMsiProperty(handle, sProperty).length() > 0); - } - - inline void UnsetMsiProperty(MSIHANDLE handle, const string& sProperty) - { - MsiSetProperty(handle, sProperty.c_str(), NULL); - } - - inline void SetMsiProperty(MSIHANDLE handle, const string& sProperty, const string&) - { - MsiSetProperty(handle, sProperty.c_str(), TEXT("1")); - } -} // namespace - -extern "C" UINT __stdcall GetUserInstallMode(MSIHANDLE handle) -{ - string sOfficeInstallPath = GetMsiProperty(handle, TEXT("INSTALLLOCATION")); - - // MessageBox(NULL, sOfficeInstallPath.c_str(), "DEBUG", MB_OK); - - // unsetting all properties - - UnsetMsiProperty( handle, TEXT("INVALIDDIRECTORY") ); - UnsetMsiProperty( handle, TEXT("ISWRONGPRODUCT") ); - UnsetMsiProperty( handle, TEXT("PATCHISOLDER") ); - UnsetMsiProperty( handle, TEXT("ALLUSERS") ); - - // 1. Searching for "ProductCode" in setup.ini - - string sSetupiniPath = sOfficeInstallPath + TEXT("program\\setup.ini"); - - TCHAR szValue[32767]; - - GetPrivateProfileString( - TEXT("Bootstrap"), - TEXT("ProductCode"), - TEXT("INVALIDDIRECTORY"), - szValue, - SAL_N_ELEMENTS(szValue), - sSetupiniPath.c_str() - ); - - if ( !_tcsicmp( szValue, TEXT("INVALIDDIRECTORY") ) ) - { - // No setup.ini or no "ProductCode" in setup.ini. This is an invalid directory. - SetMsiProperty( handle, TEXT("INVALIDDIRECTORY"), TEXT("YES") ); - // MessageBox(NULL, "INVALIDDIRECTORY set, no setup.ini or ProductCode in setup.ini.", "DEBUG", MB_OK); - SetMsiErrorCode( MSI_ERROR_INVALIDDIRECTORY ); - return ERROR_SUCCESS; - } - - // 2. Comparing first three characters of "PRODUCTMAJOR" from property table and "buildid" from InfoFile - - szValue[0] = '\0'; - - GetPrivateProfileString( - TEXT("Bootstrap"), - TEXT("buildid"), - TEXT("ISWRONGPRODUCT"), - szValue, - SAL_N_ELEMENTS(szValue), - sSetupiniPath.c_str() - ); - - if ( !_tcsicmp( szValue, TEXT("ISWRONGPRODUCT") ) ) - { - SetMsiProperty( handle, TEXT("ISWRONGPRODUCT"), TEXT("YES") ); - // MessageBox(NULL, "ISWRONGPRODUCT 1 set after searching buildid", "DEBUG", MB_OK); - SetMsiErrorCode( MSI_ERROR_ISWRONGPRODUCT ); - return ERROR_SUCCESS; - } - - string ProductMajor = GetMsiProperty(handle, TEXT("PRODUCTMAJOR")); - - // Comparing the first three characters, for example "680" - // If not equal, this version is not suited for patch or language pack - - if (_tcsnicmp(ProductMajor.c_str(), szValue, 3)) - { - SetMsiProperty( handle, TEXT("ISWRONGPRODUCT"), TEXT("YES") ); - // MessageBox(NULL, "ISWRONGPRODUCT 2 set after searching PRODUCTMAJOR", "DEBUG", MB_OK); - SetMsiErrorCode( MSI_ERROR_ISWRONGPRODUCT ); - return ERROR_SUCCESS; - } - - // 3. Setting property ALLUSERS with value from "setup.ini" - - szValue[0] = '\0'; - - GetPrivateProfileString( - TEXT("Bootstrap"), - TEXT("ALLUSERS"), - TEXT(""), - szValue, - SAL_N_ELEMENTS(szValue), - sSetupiniPath.c_str() - ); - - if ( szValue[0] ) - { - SetMsiProperty( handle, TEXT("ALLUSERS"), szValue ); - // MessageBox(NULL, "ALLUSERS set", "DEBUG", MB_OK); - } - - return ERROR_SUCCESS; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |