diff options
Diffstat (limited to 'setup_native/source/win32/customactions/reg4msdoc')
28 files changed, 0 insertions, 5551 deletions
diff --git a/setup_native/source/win32/customactions/reg4msdoc/constants.hxx b/setup_native/source/win32/customactions/reg4msdoc/constants.hxx deleted file mode 100644 index 4caab9211..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/constants.hxx +++ /dev/null @@ -1,42 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - - #ifndef _CONSTANTS_HXX_ - #define _CONSTANTS_HXX_ - -extern const int MSWORD; -extern const int MSEXCEL; -extern const int MSPOWERPOINT; -extern const int DEFAULT_HTML_EDITOR_FOR_IE; -extern const int HTML_EDITOR; -extern const int DEFAULT_SHELL_HTML_EDITOR; - - #endif - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/exports.dxp b/setup_native/source/win32/customactions/reg4msdoc/exports.dxp deleted file mode 100644 index 0f3d16886..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/exports.dxp +++ /dev/null @@ -1,3 +0,0 @@ -InstallUiSequenceEntry -InstallExecSequenceEntry -DeinstallExecSequenceEntry diff --git a/setup_native/source/win32/customactions/reg4msdoc/makefile.mk b/setup_native/source/win32/customactions/reg4msdoc/makefile.mk deleted file mode 100644 index 47239713e..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/makefile.mk +++ /dev/null @@ -1,89 +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=reg4msdocmsi - -# --- Settings ----------------------------------------------------- - -ENABLE_EXCEPTIONS=TRUE -NO_DEFAULT_STL=TRUE -DYNAMIC_CRT= -USE_DEFFILE=TRUE -MINGW_NODLL=YES - -.INCLUDE : settings.mk - -CFLAGS+=-DUNICODE -D_UNICODE - -# --- Files -------------------------------------------------------- - -.IF "$(GUI)"=="WNT" - -UWINAPILIB= - -SLOFILES = $(SLO)$/msihelper.obj\ - $(SLO)$/windowsregistry.obj\ - $(SLO)$/userregistrar.obj\ - $(SLO)$/stringconverter.obj\ - $(SLO)$/registrywnt.obj\ - $(SLO)$/registryw9x.obj\ - $(SLO)$/registryvalueimpl.obj\ - $(SLO)$/registryexception.obj\ - $(SLO)$/registry.obj\ - $(SLO)$/registrationcontextinformation.obj\ - $(SLO)$/registrar.obj\ - $(SLO)$/register.obj\ - $(SLO)$/reg4msdocmsi.obj - -SHL1STDLIBS= $(KERNEL32LIB)\ - $(USER32LIB)\ - $(ADVAPI32LIB)\ - $(SHELL32LIB)\ - $(MSILIB)\ - $(SHLWAPILIB) - -SHL1LIBS = $(SLB)$/$(TARGET).lib - -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/reg4msdoc/msihelper.cxx b/setup_native/source/win32/customactions/reg4msdoc/msihelper.cxx deleted file mode 100644 index f1f2f5982..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/msihelper.cxx +++ /dev/null @@ -1,105 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -#include "msihelper.hxx" - -#include <malloc.h> -#include <assert.h> - -bool GetMsiProp(MSIHANDLE handle, LPCTSTR name, /*out*/std::wstring& value) -{ - DWORD sz = 0; - LPTSTR dummy = TEXT(""); - if (MsiGetProperty(handle, name, dummy, &sz) == ERROR_MORE_DATA) - { - sz++; - DWORD nbytes = sz * sizeof(TCHAR); - LPTSTR buff = reinterpret_cast<LPTSTR>(_alloca(nbytes)); - ZeroMemory(buff, nbytes); - MsiGetProperty(handle, name, buff, &sz); - value = buff; - return true; - } - return false; -} - -void SetMsiProp(MSIHANDLE handle, LPCTSTR name) -{ - MsiSetProperty(handle, name, TEXT("1")); -} - -void UnsetMsiProp(MSIHANDLE handle, LPCTSTR name) -{ - MsiSetProperty(handle, name, TEXT("")); -} - -bool IsSetMsiProp(MSIHANDLE handle, LPCTSTR name) -{ - std::wstring val; - GetMsiProp(handle, name, val); - return (val == TEXT("1")); -} - -bool IsMsiPropNotEmpty(MSIHANDLE handle, LPCTSTR name) -{ - std::wstring val; - GetMsiProp(handle, name, val); - return (val != TEXT("")); -} - -bool IsAllUserInstallation(MSIHANDLE handle) -{ - return IsSetMsiProp(handle, TEXT("ALLUSERS")); -} - -std::wstring GetOfficeInstallationPath(MSIHANDLE handle) -{ - std::wstring progpath; - GetMsiProp(handle, TEXT("INSTALLLOCATION"), progpath); - return progpath; -} - -std::wstring GetOfficeExecutablePath(MSIHANDLE handle) -{ - std::wstring exepath = GetOfficeInstallationPath(handle); - exepath += TEXT("program\\soffice.exe"); - return exepath; -} - -std::wstring GetProductName(MSIHANDLE handle) -{ - std::wstring prodname; - GetMsiProp(handle, TEXT("ProductName"), prodname); - return prodname; -} - -bool IsModuleInstalled(MSIHANDLE handle, LPCTSTR name) -{ - INSTALLSTATE current_state; - INSTALLSTATE future_state; - MsiGetFeatureState(handle, name, ¤t_state, &future_state); - return (current_state == INSTALLSTATE_LOCAL); -} - -bool IsModuleSelectedForInstallation(MSIHANDLE handle, LPCTSTR name) -{ - INSTALLSTATE current_state; - INSTALLSTATE future_state; - MsiGetFeatureState(handle, name, ¤t_state, &future_state); - return (future_state == INSTALLSTATE_LOCAL); -} - -bool IsModuleSelectedForDeinstallation(MSIHANDLE handle, LPCTSTR name) -{ - INSTALLSTATE current_state; - INSTALLSTATE future_state; - MsiGetFeatureState(handle, name, ¤t_state, &future_state); - return ((current_state == INSTALLSTATE_LOCAL) && (future_state == INSTALLSTATE_ABSENT)); -} - -bool IsCompleteDeinstallation(MSIHANDLE handle) -{ - std::wstring rm; - GetMsiProp(handle, TEXT("REMOVE"), rm); - return (rm == TEXT("ALL")); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/msihelper.hxx b/setup_native/source/win32/customactions/reg4msdoc/msihelper.hxx deleted file mode 100644 index 2ff1a880f..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/msihelper.hxx +++ /dev/null @@ -1,187 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -#ifndef INCLUDED_MSIHELPER_HXX -#define INCLUDED_MSIHELPER_HXX - -#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 <string> - -/** - Get the value of the named property - - @param handle - [in] a valid msi handle. - - @param name - [in] the name of the property. - - @param value - [out] receives thes value of the property. - - @returns - <TRUE/>if the property was found. -*/ -bool GetMsiProp(MSIHANDLE handle, LPCTSTR name, /*out*/std::wstring& value); - -/** - Set the value of a binary property which can only - have the values "0" or "1" to "1". - - @param handle - [in] a valid msi handle. - - @param name - [in] the name of the property. -*/ -void SetMsiProp(MSIHANDLE handle, LPCTSTR name); - -/** - Set the value of a binary property which can only - have the values "0" or "1" to "0". - - @param handle - [in] a valid msi handle. - - @param name - [in] the name of the property. -*/ -void UnsetMsiProp(MSIHANDLE handle, LPCTSTR name); - -/** - Returns whether a certain property is set meaning - its value is "1". This method should be used for - binary properties whose value can be "0" or "1". - - @returns - <TRUE/>if the value of the specified property is - "1" else if the property is not defined or its - value is other than "1" <FALSE/> will be returned. -*/ -bool IsSetMsiProp(MSIHANDLE handle, LPCTSTR name); - -/** - Returns whether a certain property is set meaning - its value is not empty. This method should be used for - properties, that can have different values. - - @returns - <TRUE/>if the value of the specified property is - not empty. If it is empty <FALSE/> will be returned. -*/ -bool IsMsiPropNotEmpty(MSIHANDLE handle, LPCTSTR name); - -/** - Query if this is an installation for all user or not. - - @param handle - [in] a valid msi handle. - - @returns - <TRUE/>if this is an all user installation -*/ -bool IsAllUserInstallation(MSIHANDLE handle); - -/** - Returns the destination folder of the office installation - as system path. The returned path contains a final '\'. - - @param handle - [in] a valid msi handle. - - @returns - the destination path of the office installation finalized - with a '\'. -*/ -std::wstring GetOfficeInstallationPath(MSIHANDLE handle); - -/** - Returns the absolute path of the office executable that - will be installed as system path. - - @param handle - [in] a valid msi handle. - - @returns - the absolute system path of the office executable (e.g. - (C:\Program Files\StarOffice 8\program\soffice.exe"). -*/ -std::wstring GetOfficeExecutablePath(MSIHANDLE handle); - -/** - Get the name of the office that will be installed - (e.g. StarOffice 8, StarSuite 8, ...). - - @param handle - [in] a valid msi handle. - - @returns - the name of the office product that will be installed. -*/ -std::wstring GetProductName(MSIHANDLE handle); - -/** - Determine if the specified module is installed locally. - - @param handle - [in] a valid msi handle. - - @param name - [in] the name of the module. - - @returns - <TRUE/>if the specified module is installed locally. -*/ -bool IsModuleInstalled(MSIHANDLE handle, LPCTSTR name); - -/** - Determine if the specified module is selected to be installed - locally. - - @param handle - [in] a valid msi handle. - - @param name - [in] the name of the module. - - @returns - <TRUE/>if the specified module is about to be installed locally. -*/ -bool IsModuleSelectedForInstallation(MSIHANDLE handle, LPCTSTR name); - -/** - Determine if the specified module which is locally installed is - selected for deinstallation. - - @param handle - [in] a valid msi handle. - - @param name - [in] the name of the module. - - @returns - <TRUE/>if the specified module is about to be deinstalled. -*/ -bool IsModuleSelectedForDeinstallation(MSIHANDLE handle, LPCTSTR name); - -/** - Determine whether this is a complete uninstallation or not. - - @param handle - [in] a valid msi handle. - - @returns - <TRUE/>if this is a complete deinstallation. -*/ -bool IsCompleteDeinstallation(MSIHANDLE handle); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/reg4msdocmsi.cxx b/setup_native/source/win32/customactions/reg4msdoc/reg4msdocmsi.cxx deleted file mode 100644 index 538f45339..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/reg4msdocmsi.cxx +++ /dev/null @@ -1,190 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#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 <tchar.h> -#include "register.hxx" -#include "msihelper.hxx" - -#include <memory> -#include <string> - -void DetermineWordPreselectionState(MSIHANDLE handle) -{ - if (query_preselect_registration_for_ms_application(handle, MSWORD)) - SetMsiProp(handle, TEXT("SELECT_WORD")); -} - -void DetermineExcelPreselectionState(MSIHANDLE handle) -{ - if (query_preselect_registration_for_ms_application(handle, MSEXCEL)) - SetMsiProp(handle, TEXT("SELECT_EXCEL")); -} - -void DeterminePowerPointPreselectionState(MSIHANDLE handle) -{ - if (query_preselect_registration_for_ms_application(handle, MSPOWERPOINT)) - SetMsiProp(handle, TEXT("SELECT_POWERPOINT")); -} - -extern "C" UINT __stdcall InstallUiSequenceEntry(MSIHANDLE handle) -{ - //MessageBox(NULL, TEXT("InstallUiSequenceEntry"), TEXT("Information"), MB_OK | MB_ICONINFORMATION); - - if (IsModuleSelectedForInstallation(handle, TEXT("gm_p_Wrt_Bin"))) - { - DetermineWordPreselectionState(handle); - } - else if (IsModuleInstalled(handle, TEXT("gm_p_Wrt_Bin")) && - !IsModuleSelectedForDeinstallation(handle, TEXT("gm_p_Wrt_Bin")) && - IsRegisteredFor(handle, MSWORD)) - { - SetMsiProp(handle, TEXT("SELECT_WORD")); - } - else - { - UnsetMsiProp(handle, TEXT("SELECT_WORD")); - } - - if (IsModuleSelectedForInstallation(handle, TEXT("gm_p_Calc_Bin"))) - { - DetermineExcelPreselectionState(handle); - } - else if (IsModuleInstalled(handle, TEXT("gm_p_Calc_Bin")) && - !IsModuleSelectedForDeinstallation(handle, TEXT("gm_p_Calc_Bin")) && - IsRegisteredFor(handle, MSEXCEL)) - { - SetMsiProp(handle, TEXT("SELECT_EXCEL")); - } - else - { - UnsetMsiProp(handle, TEXT("SELECT_EXCEL")); - } - - if (IsModuleSelectedForInstallation(handle, TEXT("gm_p_Impress_Bin"))) - { - DeterminePowerPointPreselectionState(handle); - } - else if (IsModuleInstalled(handle, TEXT("gm_p_Impress_Bin")) && - !IsModuleSelectedForDeinstallation(handle, TEXT("gm_p_Impress_Bin")) && - IsRegisteredFor(handle, MSPOWERPOINT)) - { - SetMsiProp(handle, TEXT("SELECT_POWERPOINT")); - } - else - { - UnsetMsiProp(handle, TEXT("SELECT_POWERPOINT")); - } - - SetMsiProp(handle, TEXT("UI_SEQUENCE_EXECUTED")); - - return ERROR_SUCCESS; -} - -extern "C" UINT __stdcall InstallExecSequenceEntry(MSIHANDLE handle) -{ - //MessageBox(NULL, TEXT("InstallExecSequenceEntry"), TEXT("Information"), MB_OK | MB_ICONINFORMATION); - - // Do nothing in repair mode. - // Then UI_SEQUENCE_EXECUTED is not set and Installed is set! - // In silent installation UI_SEQUENCE_EXECUTED is also not set, but Installed is not set. - if ((!IsSetMsiProp(handle, TEXT("UI_SEQUENCE_EXECUTED"))) && (IsMsiPropNotEmpty(handle, TEXT("Installed")))) { return ERROR_SUCCESS; } - - int reg4 = 0; - int unreg4 = 0; - - // we always register as html editor for Internet Explorer - // if writer is installed because there's no harm if we do so - if (IsModuleSelectedForInstallation(handle, TEXT("gm_p_Wrt_Bin"))) - reg4 |= HTML_EDITOR; - - if (IsSetMsiProp(handle, TEXT("SELECT_WORD")) && !IsRegisteredFor(handle, MSWORD)) - reg4 |= MSWORD; - else if (!IsSetMsiProp(handle, TEXT("SELECT_WORD")) && IsRegisteredFor(handle, MSWORD)) - unreg4 |= MSWORD; - - if (IsSetMsiProp(handle, TEXT("SELECT_EXCEL")) && !IsRegisteredFor(handle, MSEXCEL)) - reg4 |= MSEXCEL; - else if (!IsSetMsiProp(handle, TEXT("SELECT_EXCEL")) && IsRegisteredFor(handle, MSEXCEL)) - unreg4 |= MSEXCEL; - - if (IsSetMsiProp(handle, TEXT("SELECT_POWERPOINT")) && !IsRegisteredFor(handle, MSPOWERPOINT)) - reg4 |= MSPOWERPOINT; - else if (!IsSetMsiProp(handle, TEXT("SELECT_POWERPOINT")) && IsRegisteredFor(handle, MSPOWERPOINT)) - unreg4 |= MSPOWERPOINT; - - if (reg4) - { - Register4MsDoc(handle, reg4); - } - - if (unreg4) - { - Unregister4MsDoc(handle, unreg4); - } - return ERROR_SUCCESS; -} - -extern "C" UINT __stdcall DeinstallExecSequenceEntry(MSIHANDLE handle) -{ - //MessageBox(NULL, TEXT("DeinstallExecSequenceEntry"), TEXT("Information"), MB_OK | MB_ICONINFORMATION); - - if (IsCompleteDeinstallation(handle)) - { - Unregister4MsDocAll(handle); - return ERROR_SUCCESS; - } - - if (IsModuleSelectedForDeinstallation(handle, TEXT("gm_p_Wrt_Bin"))) - { - Unregister4MsDoc(handle, MSWORD | HTML_EDITOR); - } - - if (IsModuleSelectedForDeinstallation(handle, TEXT("gm_p_Calc_Bin"))) - { - Unregister4MsDoc(handle, MSEXCEL); - } - - if (IsModuleSelectedForDeinstallation(handle, TEXT("gm_p_Impress_Bin"))) - { - Unregister4MsDoc(handle, MSPOWERPOINT); - } - - return ERROR_SUCCESS; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/register.cxx b/setup_native/source/win32/customactions/reg4msdoc/register.cxx deleted file mode 100644 index 21d6d7e8f..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/register.cxx +++ /dev/null @@ -1,342 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#include "register.hxx" -#include "registryexception.hxx" -#include "registrationcontextinformation.hxx" -#include "userregistrar.hxx" -#include "windowsregistry.hxx" -#include "stringconverter.hxx" -#include "msihelper.hxx" - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#pragma warning(disable: 4917) -#endif -#include <shlobj.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - - -#include <assert.h> -#ifdef _MSC_VER -#pragma warning(disable: 4350) -#endif - -typedef std::auto_ptr<Registrar> RegistrarPtr; - -namespace /* private */ -{ - RegistrarPtr CreateRegistrar(bool InstallForAllUser, const RegistrationContextInformation& RegCtx) - { - RegistrarPtr RegPtr; - - if (InstallForAllUser) - RegPtr = RegistrarPtr(new Registrar(RegCtx)); - else - RegPtr = RegistrarPtr(new UserRegistrar(RegCtx)); - - return RegPtr; - } -} // namespace private - -bool query_preselect_registration_for_ms_application(MSIHANDLE handle, int Register) -{ - bool preselect = false; - - try - { - RegistrationContextInformation RegContext(handle, GetOfficeExecutablePath(handle)); - RegistrarPtr CurrentRegistrar = CreateRegistrar(IsAllUserInstallation(handle), RegContext); - - if (Register & MSWORD) - preselect = CurrentRegistrar->QueryPreselectMsWordRegistration(); - else if (Register & MSEXCEL) - preselect = CurrentRegistrar->QueryPreselectMsExcelRegistration(); - else if (Register & MSPOWERPOINT) - preselect = CurrentRegistrar->QueryPreselectMsPowerPointRegistration(); - } - catch(RegistryException&) - { - assert(false); - } - return preselect; -} - -//----------------------------------------- -// registers StarOffice for MS document -// types and as default HTML editor if -// specified -//----------------------------------------- - -void Register4MsDoc(MSIHANDLE handle, int Register) -{ - try - { - RegistrationContextInformation RegContext(handle, GetOfficeExecutablePath(handle)); - RegistrarPtr CurrentRegistrar = CreateRegistrar(IsAllUserInstallation(handle), RegContext); - - if ((Register & MSWORD)) - CurrentRegistrar->RegisterForMsWord(); - - if ((Register & MSEXCEL)) - CurrentRegistrar->RegisterForMsExcel(); - - if ((Register & MSPOWERPOINT)) - CurrentRegistrar->RegisterForMsPowerPoint(); - - if ((Register & HTML_EDITOR)) - CurrentRegistrar->RegisterAsHtmlEditorForInternetExplorer(); - - if ((Register & DEFAULT_SHELL_HTML_EDITOR)) - { - CurrentRegistrar->RegisterAsDefaultHtmlEditorForInternetExplorer(); - CurrentRegistrar->RegisterAsDefaultShellHtmlEditor(); - } - } - catch(RegistryException&) - { - assert(false); - } - - if (Register) - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0); -} - -void Unregister4MsDoc(MSIHANDLE handle, int Unregister) -{ - try - { - RegistrationContextInformation RegContext(handle, GetOfficeExecutablePath(handle)); - RegistrarPtr CurrentRegistrar = CreateRegistrar(IsAllUserInstallation(handle), RegContext); - - if ((Unregister & MSWORD) && CurrentRegistrar->IsRegisteredFor(MSWORD)) - CurrentRegistrar->UnregisterForMsWord(); - - if ((Unregister & HTML_EDITOR) && CurrentRegistrar->IsRegisteredFor(HTML_EDITOR)) - CurrentRegistrar->UnregisterAsHtmlEditorForInternetExplorer(); - - if ((Unregister & MSEXCEL) && CurrentRegistrar->IsRegisteredFor(MSEXCEL)) - CurrentRegistrar->UnregisterForMsExcel(); - - if ((Unregister & MSPOWERPOINT) && CurrentRegistrar->IsRegisteredFor(MSPOWERPOINT)) - CurrentRegistrar->UnregisterForMsPowerPoint(); - - if ((Unregister & DEFAULT_HTML_EDITOR_FOR_IE) && CurrentRegistrar->IsRegisteredFor(DEFAULT_HTML_EDITOR_FOR_IE)) - CurrentRegistrar->UnregisterAsDefaultHtmlEditorForInternetExplorer(); - - if ((Unregister & DEFAULT_SHELL_HTML_EDITOR) && CurrentRegistrar->IsRegisteredFor(DEFAULT_SHELL_HTML_EDITOR)) - CurrentRegistrar->UnregisterAsDefaultShellHtmlEditor(); - } - catch(RegistryException&) - { - assert(false); - } - - if (Unregister) - SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0); -} - -//----------------------------------------- -// restores the entries for the selected -// registry entries -// Algorithm: -// -// 1. -// Target key exist (e.g. '.doc') -// Default value == soffice.? -// Backup key != empty -// Action: Replace Default value with backup -// key -// -// 2. -// Target key exist -// Default value == soffice.? -// Backup key == empty -// Action: delete default value -// -// 3. -// Target key exist -// Default value != soffice.? -// Action: nop -// -// 4. -// Target key does not exist -// Action: nop -//----------------------------------------- - -void Unregister4MsDocAll(MSIHANDLE handle) -{ - try - { - RegistrationContextInformation RegContext(handle, GetOfficeExecutablePath(handle)); - RegistrarPtr CurrentRegistrar = CreateRegistrar(IsAllUserInstallation(handle), RegContext); - - CurrentRegistrar->UnregisterAllAndCleanUpRegistry(); - } - catch(RegistryException&) - { - assert(false); - } -} - -//----------------------------------------- -// restores lost settings formerly made -// with Register4MsDoc -//----------------------------------------- - -void RepairRegister4MsDocSettings(MSIHANDLE handle) -{ - try - { - RegistrationContextInformation RegContext(handle, GetOfficeExecutablePath(handle)); - RegistrarPtr CurrentRegistrar = CreateRegistrar(IsAllUserInstallation(handle), RegContext); - - CurrentRegistrar->RepairRegistrationState(); - } - catch(RegistryException&) - { - assert(false); - } -} - -bool IsRegisteredFor(MSIHANDLE handle, int State) -{ - bool Registered = false; - - try - { - RegistrationContextInformation RegContext(handle, GetOfficeExecutablePath(handle)); - RegistrarPtr CurrentRegistrar = CreateRegistrar(IsAllUserInstallation(handle), RegContext); - - Registered = CurrentRegistrar->IsRegisteredFor(State); - } - catch(RegistryException&) - { - assert(false); - } - return Registered; -} - -#define SO60_UNINSTALL_KEY L"Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\StarOffice 6.0" -#define SO_BACKUP_KEY L"soffice6.bak" -#define REGMSDOCSTATE L"Reg4MsDocState" -#define SOFTWARE_CLASSES L"Software\\Classes" - -int FixReturnRegistrationState(MSIHANDLE handle) -{ - int registration_state = 0; - - try - { - WindowsRegistry registry; - - RegistryValue rv_regmsdocstate = RegistryValue( - new RegistryValueImpl(REGMSDOCSTATE, 0)); - - RegistryKey so_bak_key; - - if (IsAllUserInstallation(handle)) - { - RegistryKey hkcr_key = registry.GetClassesRootKey(); - - if (hkcr_key->HasSubKey(SO_BACKUP_KEY)) - so_bak_key = hkcr_key->OpenSubKey(SO_BACKUP_KEY); - else - so_bak_key = hkcr_key->CreateSubKey(SO_BACKUP_KEY); - - if (!so_bak_key->HasValue(REGMSDOCSTATE)) - { - // set a defined value - so_bak_key->SetValue(rv_regmsdocstate); - - RegistryKey hklm_key = registry.GetLocalMachineKey(); - - if (hklm_key->HasSubKey(SO60_UNINSTALL_KEY)) - { - RegistryKey so_uninst_key = - hklm_key->OpenSubKey(SO60_UNINSTALL_KEY); - - if (so_uninst_key->HasValue(REGMSDOCSTATE)) - so_bak_key->CopyValue(so_uninst_key, REGMSDOCSTATE); - } - } - } - else - { - RegistryKey hkcu_classes_key = - registry.GetCurrentUserKey()->OpenSubKey(SOFTWARE_CLASSES); - - so_bak_key = hkcu_classes_key->CreateSubKey(SO_BACKUP_KEY); - - if (!so_bak_key->HasValue(REGMSDOCSTATE)) - { - // set a defined value - so_bak_key->SetValue(rv_regmsdocstate); - - RegistryKey hklm_sftw_classes = - registry.GetLocalMachineKey()->OpenSubKey(SOFTWARE_CLASSES, false); - - RegistryKey so_bak_key_old; - - if (hklm_sftw_classes->HasSubKey(SO_BACKUP_KEY)) - { - so_bak_key_old = hklm_sftw_classes->OpenSubKey(SO_BACKUP_KEY, false); - - if (so_bak_key_old->HasValue(REGMSDOCSTATE)) - so_bak_key->CopyValue(so_bak_key_old, REGMSDOCSTATE); - } - else // try the uninstall key - { - RegistryKey hklm_key = registry.GetLocalMachineKey(); - - if (hklm_key->HasSubKey(SO60_UNINSTALL_KEY)) - { - RegistryKey so_uninst_key = - hklm_key->OpenSubKey(SO60_UNINSTALL_KEY); - - if (so_uninst_key->HasValue(REGMSDOCSTATE)) - so_bak_key->CopyValue(so_uninst_key, REGMSDOCSTATE); - } - } - } - } - - rv_regmsdocstate = so_bak_key->GetValue(REGMSDOCSTATE); - registration_state = rv_regmsdocstate->GetDataAsInt(); - } - catch(RegistryException&) - { - registration_state = 0; - } - - return registration_state; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/register.hxx b/setup_native/source/win32/customactions/reg4msdoc/register.hxx deleted file mode 100644 index 10d600776..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/register.hxx +++ /dev/null @@ -1,85 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#ifndef _REGISTER_HXX_ -#define _REGISTER_HXX_ - -#include "constants.hxx" - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#include <msi.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#include <string> - -const int MOD_WRITER = 0x1; -const int MOD_CALC = 0x2; -const int MOD_IMPRESS = 0x4; -const int MOD_ACTIVEX = 0x40; - -/* registers StarOffice for MS document - types and as default HTML editor if - specified */ -void Register4MsDoc(MSIHANDLE handle, int Register); - -void Unregister4MsDoc(MSIHANDLE handle, int Unregister); - -/* restores the entries for the selected - registry entries */ -void Unregister4MsDocAll(MSIHANDLE handle); - -/* restores lost settings formerly made - with Register4MsDoc */ -void RepairRegister4MsDocSettings(MSIHANDLE handle); - -/** Returns whether we are registered for */ -bool IsRegisteredFor(MSIHANDLE handle, int State); - -/** Returns whether we should preselect the - registration checkbox for a certain - application type or not */ -bool query_preselect_registration_for_ms_application( - MSIHANDLE handle, int Register); - -// StarOffice 6.0 saved the registration -// state in HKEY_LOCAL_MACHINE\Software\ -// Microsoft\Windows\CurrentVersion\Uninstall\ -// StarOffice 6.0\Reg4MsdocState we move this -// value if available to the new registry -// location -int FixReturnRegistrationState(MSIHANDLE handle); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registrar.cxx b/setup_native/source/win32/customactions/reg4msdoc/registrar.cxx deleted file mode 100644 index ba6d8bd56..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registrar.cxx +++ /dev/null @@ -1,808 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// Registrar.cpp: Implementierung der Klasse Registrar. -// -////////////////////////////////////////////////////////////////////// - -#include "registrar.hxx" - -#include "RegistryValueImpl.hxx" -#include "windowsregistry.hxx" -#include "registryexception.hxx" - -#include <assert.h> -#ifdef _MSC_VER -#pragma warning(disable: 4350 4482) -#include "strsafe.h" -#endif - -//---------------------------------------------------------- -#ifdef DEBUG -inline void OutputDebugStringFormat( LPCTSTR pFormat, ... ) -{ - TCHAR buffer[1024]; - va_list args; - - va_start( args, pFormat ); - StringCchVPrintf( buffer, sizeof(buffer), pFormat, args ); - OutputDebugString( buffer ); -} -#else -static inline void OutputDebugStringFormat( LPCTSTR, ... ) -{ -} -#endif -//---------------------------------------------------------- - -const int MSWORD = 0x1; -const int MSEXCEL = 0x2; -const int MSPOWERPOINT = 0x4; -const int DEFAULT_HTML_EDITOR_FOR_IE = 0x8; -const int HTML_EDITOR = 0x10; -const int DEFAULT_SHELL_HTML_EDITOR = 0x20; - -namespace /* private */ -{ - const std::wstring HTM_OPENWITHLIST = L".htm\\OpenWithList"; - const std::wstring APPLICATIONS = L"Applications"; - const std::wstring SHELL_EDIT_COMMAND = L"shell\\edit\\command"; - const std::wstring HTML_EDIT = L"HTML Edit"; - const std::wstring HTML_EDIT_DISPLAY_NAME = L"Edit Display Name"; - const std::wstring SHELL_EDIT_COMMAND_BACKUP = L"Shell Edit Cmd"; - const std::wstring DEFAULT_HTML_EDITOR = L"Default HTML Editor"; - const std::wstring MS_IE_DEF_HTML_EDITOR = L"Software\\Microsoft\\Internet Explorer\\Default HTML Editor"; - const std::wstring MS_IE_DEF_HTML_EDITOR_SHL_EDIT_CMD = L"Software\\Microsoft\\Internet Explorer\\Default HTML Editor\\shell\\edit\\command"; -} - -Registrar::Registrar(const RegistrationContextInformation& RegContext) : - m_ContextInformation(RegContext), - FORWARD_KEY_PREFIX(L"OpenOffice.org"),//FORWARD_KEY_PREFIX(L"soffice6"), - DEFAULT_VALUE_NAME(L""), - BACKUP_VALUE_NAME(L"Backup"), - PRIVATE_BACKUP_KEY_NAME(L"OpenOffice.org.reg4msdocmsi"),//PRIVATE_BACKUP_KEY_NAME(L"soffice6.bak"), - REGISTRATION_STATE(L"Reg4MsDocState") -{ - m_RootKey = WindowsRegistry().GetClassesRootKey(); -} - -Registrar::~Registrar() -{ -} - -void Registrar::RegisterForMsWord() const -{ - assert(m_RootKey.get()); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetWordDocumentFileExtension(), - m_ContextInformation.GetWordDocumentDisplayName(), - m_ContextInformation.GetWordDocumentDefaultIconEntry(), - m_ContextInformation.GetWordDocumentDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Writer); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetMOOXWordDocumentFileExtension(), - m_ContextInformation.GetMOOXWordDocumentDisplayName(), - m_ContextInformation.GetWordDocumentDefaultIconEntry(), - m_ContextInformation.GetWordDocumentDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Writer); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetWordTemplateFileExtension(), - m_ContextInformation.GetWordTemplateDisplayName(), - m_ContextInformation.GetWordTemplateDefaultIconEntry(), - m_ContextInformation.GetWordTemplateDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Writer); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetRtfDocumentFileExtension(), - m_ContextInformation.GetRtfDocumentDisplayName(), - m_ContextInformation.GetRtfDocumentDefaultIconEntry(), - m_ContextInformation.GetRtfDocumentDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Writer); - - SaveRegisteredFor(MSWORD); -} - -void Registrar::UnregisterForMsWord() const -{ - assert(m_RootKey.get()); - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetWordDocumentFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetMOOXWordDocumentFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetWordTemplateFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetRtfDocumentFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - SaveNotRegisteredFor(MSWORD); -} - -bool Registrar::QueryPreselectForMsApplication(const std::wstring& file_extension) const -{ - bool preselect = false; - - // We use HKCR else we would not see that a registration for - // MS Office applications already exist if we are about to - // register in HKCU\Software\Classes - RegistryKey root_key = WindowsRegistry().GetClassesRootKey(); - - if (!root_key->HasSubKey(file_extension)) - { - preselect = true; - OutputDebugStringFormat( TEXT("QueryPreselect: No SubKey found for (%s), preselected!\n"), file_extension.c_str() ); - } - else - { - RegistryKey RegKey = root_key->OpenSubKey(file_extension, false); - - if (RegKey->HasValue(DEFAULT_VALUE_NAME)) - { - RegistryValue RegVal = RegKey->GetValue(DEFAULT_VALUE_NAME); - - if (REG_SZ == RegVal->GetType() && - IsOpenOfficeRegisteredForMsApplication(RegVal->GetDataAsUniString())) - { - preselect = true; - OutputDebugStringFormat( TEXT("QueryPreselect: (%s) registered to Office, preselected!\n"), file_extension.c_str() ); - } - else if ( (REG_SZ == RegVal->GetType()) && ! root_key->HasSubKey( RegVal->GetDataAsUniString() ) ) - { - preselect = true; - OutputDebugStringFormat( TEXT("QueryPreselect: (%s) registered but destination is empty, preselected!\n"), file_extension.c_str() ); - } - } - else - { - preselect = true; - OutputDebugStringFormat( TEXT("QueryPreselect: No default found for SubKey (%s), preselected!\n"), file_extension.c_str() ); - } - } - return preselect; -} - -bool Registrar::QueryPreselectMsWordRegistration() const -{ - return QueryPreselectForMsApplication( - m_ContextInformation.GetWordDocumentFileExtension()); -} - -void Registrar::RegisterForMsExcel() const -{ - assert(m_RootKey.get()); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetExcelSheetFileExtension(), - m_ContextInformation.GetExcelSheetDisplayName(), - m_ContextInformation.GetExcelSheetDefaultIconEntry(), - m_ContextInformation.GetExcelSheetDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Calc); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetMOOXExcelSheetFileExtension(), - m_ContextInformation.GetMOOXExcelSheetDisplayName(), - m_ContextInformation.GetExcelSheetDefaultIconEntry(), - m_ContextInformation.GetExcelSheetDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Calc); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetExcelTemplateFileExtension(), - m_ContextInformation.GetExcelTemplateDisplayName(), - m_ContextInformation.GetExcelTemplateDefaultIconEntry(), - m_ContextInformation.GetExcelTemplateDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Calc); - - SaveRegisteredFor(MSEXCEL); -} - -void Registrar::UnregisterForMsExcel() const -{ - assert(m_RootKey.get()); - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetExcelSheetFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetMOOXExcelSheetFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetMOOXPowerPointDocumentFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetExcelTemplateFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - SaveNotRegisteredFor(MSEXCEL); -} - -bool Registrar::QueryPreselectMsExcelRegistration() const -{ - return QueryPreselectForMsApplication( - m_ContextInformation.GetExcelSheetFileExtension()); -} - -void Registrar::RegisterForMsPowerPoint() const -{ - assert(m_RootKey.get()); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetPowerPointDocumentFileExtension(), - m_ContextInformation.GetPowerPointDocumentDisplayName(), - m_ContextInformation.GetPowerPointDocumentDefaultIconEntry(), - m_ContextInformation.GetPowerPointDocumentDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Impress); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetMOOXPowerPointDocumentFileExtension(), - m_ContextInformation.GetMOOXPowerPointDocumentDisplayName(), - m_ContextInformation.GetPowerPointDocumentDefaultIconEntry(), - m_ContextInformation.GetPowerPointDocumentDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Impress); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetPowerPointShowFileExtension(), - m_ContextInformation.GetPowerPointShowDisplayName(), - m_ContextInformation.GetPowerPointShowDefaultIconEntry(), - m_ContextInformation.GetPowerPointShowDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Impress); - - RegisterForMsOfficeApplication( - m_ContextInformation.GetPowerPointTemplateFileExtension(), - m_ContextInformation.GetPowerPointTemplateDisplayName(), - m_ContextInformation.GetPowerPointTemplateDefaultIconEntry(), - m_ContextInformation.GetPowerPointTemplateDefaultShellCommand(), - m_ContextInformation.ShellNewCommandDisplayName(), - RegistrationContextInformation::Impress); - - SaveRegisteredFor(MSPOWERPOINT); -} - -void Registrar::UnregisterForMsPowerPoint() const -{ - assert(m_RootKey.get()); - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetPowerPointDocumentFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetPowerPointShowFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - try - { - UnregisterForMsOfficeApplication( - m_ContextInformation.GetPowerPointTemplateFileExtension()); - } - catch(RegistryKeyNotFoundException&) - {} - - SaveNotRegisteredFor(MSPOWERPOINT); -} - -//----------------------------------------- -/* -*/ -bool Registrar::QueryPreselectMsPowerPointRegistration() const -{ - return QueryPreselectForMsApplication( m_ContextInformation.GetPowerPointDocumentFileExtension()) && - QueryPreselectForMsApplication( m_ContextInformation.GetPowerPointShowFileExtension()); -} - -//----------------------------------------- -/** The documentation says we have to - make the following entries to register - a html editor for the Internet Explorer - HKCR\.htm\OpenWithList\App Friendly Name\shell\edit\command - But the reality shows that this works only - with Internet Explorer 5.x - Internet Explorer 6.0 wants the follwoing - entries: - HKCR\.htm\OpenWithList\App.exe - HKCR\Applications\App.ex\shell\edit\command -*/ -void Registrar::RegisterAsHtmlEditorForInternetExplorer() const -{ - assert(m_RootKey.get()); - - std::wstring OOFriendlyAppName = m_ContextInformation.GetOpenOfficeFriendlyAppName(); - - std::wstring RegKeyName = HTM_OPENWITHLIST + std::wstring(L"\\") + OOFriendlyAppName; - RegistryKey RegKey = m_RootKey->CreateSubKey(RegKeyName); - - RegKey = RegKey->CreateSubKey(SHELL_EDIT_COMMAND); - - RegistryValue RegVal( - new RegistryValueImpl( - DEFAULT_VALUE_NAME, - m_ContextInformation.GetOpenOfficeCommandline(RegistrationContextInformation::Open, - RegistrationContextInformation::Writer))); - - RegKey->SetValue(RegVal); - - RegKeyName = APPLICATIONS + std::wstring(L"\\") + OOFriendlyAppName; - RegKey = m_RootKey->CreateSubKey(RegKeyName); - - RegVal->SetName(L"FriendlyAppName"); - RegVal->SetValue(OOFriendlyAppName); - RegKey->SetValue(RegVal); - - RegKey = RegKey->CreateSubKey(SHELL_EDIT_COMMAND); - RegVal->SetName(DEFAULT_VALUE_NAME); - RegVal->SetValue( - m_ContextInformation.GetOpenOfficeCommandline(RegistrationContextInformation::Open, - RegistrationContextInformation::Writer)); - RegKey->SetValue(RegVal); - - SaveRegisteredFor(HTML_EDITOR); -} - -void Registrar::UnregisterAsHtmlEditorForInternetExplorer() const -{ - assert(m_RootKey.get()); - - try - { - std::wstring OOFriendlyAppName = m_ContextInformation.GetOpenOfficeFriendlyAppName(); - - RegistryKey aRegKey = m_RootKey->OpenSubKey( APPLICATIONS ); - if ( aRegKey->HasSubKey( OOFriendlyAppName ) ) - aRegKey->DeleteSubKeyTree( OOFriendlyAppName ); - - aRegKey = m_RootKey->OpenSubKey( HTM_OPENWITHLIST ); - if ( aRegKey->HasSubKey( OOFriendlyAppName ) ) - aRegKey->DeleteSubKeyTree( OOFriendlyAppName ); - } - catch(RegistryKeyNotFoundException&) - {} - - SaveNotRegisteredFor(HTML_EDITOR); -} - -void Registrar::RegisterAsDefaultHtmlEditorForInternetExplorer() const -{ - assert(m_RootKey.get()); - - RegistryKey RegistrationRootKey = GetRootKeyForDefHtmlEditorForIERegistration(); - - RegistryKey RegKey = RegistrationRootKey->CreateSubKey(MS_IE_DEF_HTML_EDITOR_SHL_EDIT_CMD); - - RegistryValue RegVal = RegistryValue(new RegistryValueImpl(DEFAULT_VALUE_NAME, L"")); - - if (RegKey->HasValue(DEFAULT_VALUE_NAME)) - { - RegVal = RegKey->GetValue(DEFAULT_VALUE_NAME); - - std::wstring CmdLine = RegVal->GetDataAsUniString(); - - if (std::wstring::npos == CmdLine.find(m_ContextInformation.GetOpenOfficeExecutableName())) - { - RegistryKey BackupRegKey = m_RootKey->CreateSubKey(PRIVATE_BACKUP_KEY_NAME + L"\\" + DEFAULT_HTML_EDITOR); - - if (RegKey->HasValue(DEFAULT_VALUE_NAME)) - BackupRegKey->CopyValue(RegKey, DEFAULT_VALUE_NAME); - - RegKey = RegistrationRootKey->OpenSubKey(MS_IE_DEF_HTML_EDITOR); - if (RegKey->HasValue(L"Description")) - BackupRegKey->CopyValue(RegKey, L"Description"); - } - } - - RegVal->SetValue( - m_ContextInformation.GetOpenOfficeCommandline(RegistrationContextInformation::Open, - RegistrationContextInformation::Writer)); - RegKey = RegistrationRootKey->OpenSubKey(MS_IE_DEF_HTML_EDITOR_SHL_EDIT_CMD); - RegKey->SetValue(RegVal); - - RegVal->SetName(L"Description"); - RegVal->SetValue(m_ContextInformation.GetOpenOfficeFriendlyAppName()); - RegKey = RegistrationRootKey->OpenSubKey(MS_IE_DEF_HTML_EDITOR); - RegKey->SetValue(RegVal); - - SaveRegisteredFor(DEFAULT_HTML_EDITOR_FOR_IE); -} - -void Registrar::UnregisterAsDefaultHtmlEditorForInternetExplorer() const -{ - assert(m_RootKey.get()); - - RegistryKey RegistrationRootKey = GetRootKeyForDefHtmlEditorForIERegistration(); - - RegistryKey RegKey = RegistrationRootKey->OpenSubKey(MS_IE_DEF_HTML_EDITOR_SHL_EDIT_CMD); - - if (RegKey->HasValue(DEFAULT_VALUE_NAME)) - { - RegistryValue RegVal = RegKey->GetValue(DEFAULT_VALUE_NAME); - - std::wstring CmdLine = RegVal->GetDataAsUniString(); - - if (std::wstring::npos != CmdLine.find(m_ContextInformation.GetOpenOfficeExecutableName())) - { - RegistryKey BackupRegKey = m_RootKey->OpenSubKey(PRIVATE_BACKUP_KEY_NAME); - - if (BackupRegKey->HasSubKey(DEFAULT_HTML_EDITOR)) - { - BackupRegKey = BackupRegKey->OpenSubKey(DEFAULT_HTML_EDITOR); - - if (BackupRegKey->HasValue(DEFAULT_VALUE_NAME)) - RegKey->CopyValue(BackupRegKey, DEFAULT_VALUE_NAME); - else - RegKey->DeleteValue(DEFAULT_VALUE_NAME); - - RegKey = RegistrationRootKey->OpenSubKey(MS_IE_DEF_HTML_EDITOR); - - if (BackupRegKey->HasValue(L"Description")) - RegKey->CopyValue(BackupRegKey, L"Description"); - else - RegKey->DeleteValue(L"Description"); - } - else - { - RegKey->DeleteValue(DEFAULT_VALUE_NAME); - RegKey = RegistrationRootKey->OpenSubKey(MS_IE_DEF_HTML_EDITOR); - RegKey->DeleteValue(L"Description"); - } - } - } - - SaveNotRegisteredFor(DEFAULT_HTML_EDITOR_FOR_IE); -} - -void Registrar::RegisterAsDefaultShellHtmlEditor() const -{ - assert(m_RootKey.get()); - - RegistryKey RegKey = m_RootKey->CreateSubKey(L".htm"); - - RegistryValue RegVal = RegistryValue( - new RegistryValueImpl(DEFAULT_VALUE_NAME, L"")); - - if (RegKey->HasValue(DEFAULT_VALUE_NAME)) - RegVal = RegKey->GetValue(DEFAULT_VALUE_NAME); - - std::wstring HtmFwdKey = RegVal->GetDataAsUniString(); - if (0 == HtmFwdKey.length() || !m_RootKey->HasSubKey(HtmFwdKey)) - HtmFwdKey = L".htm"; - - RegKey = m_RootKey->CreateSubKey(HtmFwdKey + L"\\" + SHELL_EDIT_COMMAND); - - if (RegKey->HasValue(DEFAULT_VALUE_NAME)) - { - RegVal = RegKey->GetValue(DEFAULT_VALUE_NAME); - - std::wstring CmdLine = RegVal->GetDataAsUniString(); - - // backup old values if we are not in place - if (std::wstring::npos == CmdLine.find(m_ContextInformation.GetOpenOfficeExecutableName())) - { - RegistryKey BackupRegKey = m_RootKey->CreateSubKey(PRIVATE_BACKUP_KEY_NAME + L"\\" + HTML_EDIT); - BackupRegKey->CopyValue(RegKey, DEFAULT_VALUE_NAME, SHELL_EDIT_COMMAND_BACKUP); - } - } - - RegVal->SetValue( - m_ContextInformation.GetOpenOfficeCommandline(RegistrationContextInformation::Open, - RegistrationContextInformation::Writer)); - - RegKey->SetValue(RegVal); - - SaveRegisteredFor(DEFAULT_SHELL_HTML_EDITOR); -} - -void Registrar::UnregisterAsDefaultShellHtmlEditor() const -{ - assert(m_RootKey.get()); - - try - { - RegistryKey RegKey = m_RootKey->OpenSubKey(L".htm"); - - RegistryValue RegVal = RegistryValue( - new RegistryValueImpl(DEFAULT_VALUE_NAME, L"")); - - if (RegKey->HasValue(DEFAULT_VALUE_NAME)) - RegVal = RegKey->GetValue(DEFAULT_VALUE_NAME); - - std::wstring HtmFwdKey = RegVal->GetDataAsUniString(); - - if (0 == HtmFwdKey.length() || !m_RootKey->HasSubKey(HtmFwdKey)) - HtmFwdKey = L".htm"; - - RegKey = m_RootKey->OpenSubKey(HtmFwdKey + L"\\" + SHELL_EDIT_COMMAND); - - RegVal = RegKey->GetValue(DEFAULT_VALUE_NAME); - - std::wstring CmdLine = RegVal->GetDataAsUniString(); - - if (std::wstring::npos != CmdLine.find(m_ContextInformation.GetOpenOfficeExecutableName())) - { - RegistryKey BackupRegKey = m_RootKey->CreateSubKey(PRIVATE_BACKUP_KEY_NAME + L"\\" + HTML_EDIT); - - if (BackupRegKey->HasValue(SHELL_EDIT_COMMAND_BACKUP)) - RegKey->CopyValue(BackupRegKey, SHELL_EDIT_COMMAND_BACKUP, DEFAULT_VALUE_NAME); - else - RegKey->DeleteValue(DEFAULT_VALUE_NAME); - } - } - catch(RegistryKeyNotFoundException&) - { - } - - SaveNotRegisteredFor(DEFAULT_SHELL_HTML_EDITOR); -} - -void Registrar::SaveRegisteredFor(int State) const -{ - assert(m_RootKey.get()); - - int NewState = GetRegisterState(); - NewState |= State; - SetRegisterState(NewState); -} - -void Registrar::SaveNotRegisteredFor(int State) const -{ - assert(m_RootKey.get()); - - int NewState = GetRegisterState(); - NewState &= ~State; - SetRegisterState(NewState); -} - -int Registrar::GetRegisterState() const -{ - int State = 0; - - RegistryKey RegKey = m_RootKey->CreateSubKey(PRIVATE_BACKUP_KEY_NAME); - - if (RegKey->HasValue(REGISTRATION_STATE)) - { - RegistryValue RegVal = RegKey->GetValue(REGISTRATION_STATE); - if (REG_DWORD == RegVal->GetType()) - State = RegVal->GetDataAsInt(); - } - - return State; -} - -void Registrar::SetRegisterState(int NewState) const -{ - RegistryKey RegKey = m_RootKey->CreateSubKey(PRIVATE_BACKUP_KEY_NAME); - RegistryValue RegVal = RegistryValue(new RegistryValueImpl(REGISTRATION_STATE, NewState)); - RegKey->SetValue(RegVal); -} - -bool Registrar::IsRegisteredFor(int State) const -{ - assert(m_RootKey.get()); - - RegistryKey RegKey = m_RootKey->CreateSubKey(PRIVATE_BACKUP_KEY_NAME); - - int SavedState = 0; - - if (RegKey->HasValue(REGISTRATION_STATE)) - { - RegistryValue RegVal = RegKey->GetValue(REGISTRATION_STATE); - if (REG_DWORD == RegVal->GetType()) - SavedState = RegVal->GetDataAsInt(); - } - - return ((SavedState & State) == State); -} - -//-------------------------------------- -/** Restore the last registration state (necessary for - Setup repair) */ -void Registrar::RepairRegistrationState() const -{ - assert(m_RootKey.get()); - - if (IsRegisteredFor(MSWORD)) - RegisterForMsWord(); - - if (IsRegisteredFor(MSEXCEL)) - RegisterForMsExcel(); - - if (IsRegisteredFor(MSPOWERPOINT)) - RegisterForMsPowerPoint(); - - if (IsRegisteredFor(DEFAULT_HTML_EDITOR_FOR_IE)) - RegisterAsDefaultHtmlEditorForInternetExplorer(); - - if (IsRegisteredFor(HTML_EDITOR)) - RegisterAsHtmlEditorForInternetExplorer(); - - if (IsRegisteredFor(DEFAULT_SHELL_HTML_EDITOR)) - RegisterAsDefaultShellHtmlEditor(); -} - -/** Unregisters all and delete all Registry keys we have written */ -void Registrar::UnregisterAllAndCleanUpRegistry() const -{ - assert(m_RootKey.get()); - - if (IsRegisteredFor(MSWORD)) - UnregisterForMsWord(); - - if (IsRegisteredFor(MSEXCEL)) - UnregisterForMsExcel(); - - if (IsRegisteredFor(MSPOWERPOINT)) - UnregisterForMsPowerPoint(); - - if (IsRegisteredFor(DEFAULT_HTML_EDITOR_FOR_IE)) - UnregisterAsDefaultHtmlEditorForInternetExplorer(); - - if (IsRegisteredFor(HTML_EDITOR)) - UnregisterAsHtmlEditorForInternetExplorer(); - - if (IsRegisteredFor(DEFAULT_SHELL_HTML_EDITOR)) - UnregisterAsDefaultShellHtmlEditor(); - - if (m_RootKey->HasSubKey(PRIVATE_BACKUP_KEY_NAME)) - m_RootKey->DeleteSubKeyTree(PRIVATE_BACKUP_KEY_NAME); -} - -void Registrar::RegisterForMsOfficeApplication( - const std::wstring& FileExtension, - const std::wstring& DocumentDisplayName, - const std::wstring& DefaultIconEntry, - const std::wstring& DefaultShellCommand, - const std::wstring& ShellNewCommandDisplayName, - const RegistrationContextInformation::OFFICE_APPLICATION eOfficeApp) const -{ - assert(m_RootKey.get()); - - std::wstring ForwardKeyName = FORWARD_KEY_PREFIX + FileExtension; - - RegistryKey ForwardKey = m_RootKey->CreateSubKey(ForwardKeyName); - RegistryValue RegVal(new RegistryValueImpl(std::wstring(DEFAULT_VALUE_NAME), DocumentDisplayName)); - ForwardKey->SetValue(RegVal); - - RegistryKey RegKey = ForwardKey->CreateSubKey(L"DefaultIcon"); - RegVal->SetValue(DefaultIconEntry); - RegKey->SetValue(RegVal); - - RegistryKey RegKeyShell = ForwardKey->CreateSubKey(L"shell"); - RegVal->SetValue(DefaultShellCommand); - RegKeyShell->SetValue(RegVal); - - RegKey = RegKeyShell->CreateSubKey(L"new"); - RegVal->SetValue(ShellNewCommandDisplayName); - RegKey->SetValue(RegVal); - - RegKey = RegKey->CreateSubKey(L"command"); - RegVal->SetValue(m_ContextInformation.GetOpenOfficeCommandline(RegistrationContextInformation::New, eOfficeApp)); - RegKey->SetValue(RegVal); - - RegKey = RegKeyShell->CreateSubKey(L"open\\command"); - RegVal->SetValue(m_ContextInformation.GetOpenOfficeCommandline(RegistrationContextInformation::Open, eOfficeApp)); - RegKey->SetValue(RegVal); - - RegKey = RegKeyShell->CreateSubKey(L"print\\command"); - RegVal->SetValue(m_ContextInformation.GetOpenOfficeCommandline(RegistrationContextInformation::Print, eOfficeApp)); - RegKey->SetValue(RegVal); - - RegKey = RegKeyShell->CreateSubKey(L"printto\\command"); - RegVal->SetValue(m_ContextInformation.GetOpenOfficeCommandline(RegistrationContextInformation::Printto, eOfficeApp)); - RegKey->SetValue(RegVal); - - // set the new forward key under the appropriate extension - RegKey = m_RootKey->CreateSubKey(FileExtension); - - if (RegKey->HasValue(DEFAULT_VALUE_NAME)) - { - RegVal = RegKey->GetValue(DEFAULT_VALUE_NAME); - - if (REG_SZ == RegVal->GetType()) - { - std::wstring str = RegVal->GetDataAsUniString(); - if (!IsOpenOfficeRegisteredForMsApplication(str)) - ForwardKey->CopyValue(RegKey, DEFAULT_VALUE_NAME, BACKUP_VALUE_NAME); - } - } - - RegVal->SetValue(ForwardKeyName); - RegKey->SetValue(RegVal); -} - -void Registrar::UnregisterForMsOfficeApplication(const std::wstring& FileExtension) const -{ - std::wstring FwdRegKeyName = FORWARD_KEY_PREFIX + FileExtension; - - if (m_RootKey->HasSubKey(FileExtension)) - { - RegistryKey RegKey = m_RootKey->OpenSubKey(FileExtension); - - if (RegKey->HasValue(DEFAULT_VALUE_NAME)) - { - RegistryValue RegVal = RegKey->GetValue(DEFAULT_VALUE_NAME); - if (REG_SZ == RegVal->GetType() && - IsOpenOfficeRegisteredForMsApplication(RegVal->GetDataAsUniString())) - { - RegistryKey FwdRegKey = m_RootKey->CreateSubKey(FwdRegKeyName); - - if (FwdRegKey->HasValue(BACKUP_VALUE_NAME)) - RegKey->CopyValue(FwdRegKey, BACKUP_VALUE_NAME, DEFAULT_VALUE_NAME); - else - RegKey->DeleteValue(DEFAULT_VALUE_NAME); - } - } - } - - if (m_RootKey->HasSubKey(FwdRegKeyName)) - m_RootKey->DeleteSubKeyTree(FwdRegKeyName); -} - -RegistryKey Registrar::GetRootKeyForDefHtmlEditorForIERegistration() const -{ - return WindowsRegistry().GetLocalMachineKey(); -} - -bool Registrar::IsOpenOfficeRegisteredForMsApplication(const std::wstring& DocumentExtensionDefValue) const -{ - return (std::wstring::npos != DocumentExtensionDefValue.find(FORWARD_KEY_PREFIX)); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registrar.hxx b/setup_native/source/win32/customactions/reg4msdoc/registrar.hxx deleted file mode 100644 index e0bf8f1ee..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registrar.hxx +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// Registrar.h: Schnittstelle f�r die Klasse Registrar. -// -////////////////////////////////////////////////////////////////////// - -#ifndef _REGISTRAR_HXX_ -#define _REGISTRAR_HXX_ - -#include "registry.hxx" -#include "registrationcontextinformation.hxx" - -#include "constants.hxx" - -class Registrar -{ -public: - - Registrar(const RegistrationContextInformation& RegContext); - - virtual ~Registrar(); - - bool IsRegisteredFor(int State) const; - - virtual void RegisterForMsWord() const; - virtual void UnregisterForMsWord() const; - virtual bool QueryPreselectMsWordRegistration() const; - - virtual void RegisterForMsExcel() const; - virtual void UnregisterForMsExcel() const; - virtual bool QueryPreselectMsExcelRegistration() const; - - virtual void RegisterForMsPowerPoint() const; - virtual void UnregisterForMsPowerPoint() const; - virtual bool QueryPreselectMsPowerPointRegistration() const; - - virtual void RegisterAsHtmlEditorForInternetExplorer() const; - virtual void UnregisterAsHtmlEditorForInternetExplorer() const; - - virtual void RegisterAsDefaultHtmlEditorForInternetExplorer() const; - virtual void UnregisterAsDefaultHtmlEditorForInternetExplorer() const; - - virtual void RegisterAsDefaultShellHtmlEditor() const; - virtual void UnregisterAsDefaultShellHtmlEditor() const; - - /** Restore the last registration state (necessary for - Setup repair) - */ - virtual void RepairRegistrationState() const; - - /** Unregisters all and delete all Registry keys we have written - */ - virtual void UnregisterAllAndCleanUpRegistry() const; - -protected: - - virtual void RegisterForMsOfficeApplication( - const std::wstring& FileExtension, - const std::wstring& DocumentDisplayName, - const std::wstring& DefaultIconEntry, - const std::wstring& DefaultShellCommand, - const std::wstring& ShellNewCommandDisplayName, - const RegistrationContextInformation::OFFICE_APPLICATION eOfficeApp) const; - - virtual void UnregisterForMsOfficeApplication( - const std::wstring& FileExtension) const; - - virtual RegistryKey GetRootKeyForDefHtmlEditorForIERegistration() const; - - void SaveRegisteredFor(int State) const; - void SaveNotRegisteredFor(int State) const; - - int GetRegisterState() const; - void SetRegisterState(int NewState) const; - - virtual bool QueryPreselectForMsApplication(const std::wstring& file_extension) const; - - /** A helper function (for readability) returns true if OpenOffice is already - registered for a MS application - - @param DocumentExtensionDefValue - The default value of the appropriate document extension Registry key - */ - bool IsOpenOfficeRegisteredForMsApplication(const std::wstring& DocumentExtensionDefValue) const; - -protected: - const RegistrationContextInformation& m_ContextInformation; - - const std::wstring FORWARD_KEY_PREFIX; - const std::wstring DEFAULT_VALUE_NAME; - const std::wstring BACKUP_VALUE_NAME; - const std::wstring PRIVATE_BACKUP_KEY_NAME; - const std::wstring REGISTRATION_STATE; - - RegistryKey m_RootKey; - -// prevent copy/assignment -private: - Registrar(const Registrar&); - Registrar& operator=(const Registrar&); -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.cxx b/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.cxx deleted file mode 100644 index 3b116f2e1..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.cxx +++ /dev/null @@ -1,388 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -//Implementierung der Klasse RegistrationContextInformation. - -#include "registrationcontextinformation.hxx" -#include "msihelper.hxx" - -#define WINDOWS_LEAN_AND_MEAN -#include <windows.h> -#include <assert.h> -#include <algorithm> - -namespace /* private */ -{ - const int MAX_REGKEY_LENGTH_WIN9X = 16300; -} - -RegistrationContextInformation::RegistrationContextInformation(MSIHANDLE hMsi, const std::wstring& OpenOfficeExecutablePath) : - msihandle_(hMsi), - m_IsWin9x(true), - m_OOExecPath(OpenOfficeExecutablePath) -{ - OSVERSIONINFOA osverinfo; - ZeroMemory(&osverinfo, sizeof(osverinfo)); - osverinfo.dwOSVersionInfoSize = sizeof(osverinfo); - GetVersionExA(&osverinfo); - - m_IsWin9x = (osverinfo.dwPlatformId == VER_PLATFORM_WIN32_WINDOWS); - assert(m_OOExecPath.length()); - ExtractOpenOfficeExecNameFromPath(); -} - -std::wstring RegistrationContextInformation::GetWordDocumentDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_MS_WORD_DOCUMENT"), str); - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("Microsoft Word Document"); - return str; -} - -std::wstring RegistrationContextInformation::GetWordDocumentFileExtension() const -{ - return std::wstring(TEXT(".doc")); -} - -std::wstring RegistrationContextInformation::GetWordDocumentDefaultIconEntry() const -{ - return m_OOExecPath + std::wstring(TEXT(",1")); -} - -std::wstring RegistrationContextInformation::GetWordDocumentDefaultShellCommand() const -{ - return std::wstring(TEXT("open")); -} - -std::wstring RegistrationContextInformation::GetMOOXWordDocumentDisplayName() const -{ - std::wstring str; - str = TEXT("Microsoft Word 2007 Document"); - return str; -} - -std::wstring RegistrationContextInformation::GetMOOXWordDocumentFileExtension() const -{ - return std::wstring(TEXT(".docx")); -} - -std::wstring RegistrationContextInformation::GetWordTemplateDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_MS_WORD_TEMPLATE"), str); - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("Microsoft Word Template"); - return str; -} - -std::wstring RegistrationContextInformation::GetWordTemplateFileExtension() const -{ - return std::wstring(TEXT(".dot")); -} - -std::wstring RegistrationContextInformation::GetWordTemplateDefaultIconEntry() const -{ - return m_OOExecPath + std::wstring(TEXT(",2")); -} - -std::wstring RegistrationContextInformation::GetWordTemplateDefaultShellCommand() const -{ - return std::wstring(TEXT("new")); -} - -std::wstring RegistrationContextInformation::GetRtfDocumentDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_RTF_DOCUMENT"), str); - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("Rich Text Document"); - return str; -} - -std::wstring RegistrationContextInformation::GetRtfDocumentFileExtension() const -{ - return std::wstring(TEXT(".rtf")); -} - -std::wstring RegistrationContextInformation::GetRtfDocumentDefaultIconEntry() const -{ - return m_OOExecPath + std::wstring(TEXT(",1")); -} - -std::wstring RegistrationContextInformation::GetRtfDocumentDefaultShellCommand() const -{ - return std::wstring(TEXT("open")); -} - -std::wstring RegistrationContextInformation::GetExcelSheetDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_MS_EXCEL_WORKSHEET"), str); - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("Microsoft Excel Worksheet"); - return str; -} - -std::wstring RegistrationContextInformation::GetExcelSheetFileExtension() const -{ - return std::wstring(TEXT(".xls")); -} - -std::wstring RegistrationContextInformation::GetExcelSheetDefaultIconEntry() const -{ - return m_OOExecPath + std::wstring(TEXT(",3")); -} - -std::wstring RegistrationContextInformation::GetExcelSheetDefaultShellCommand() const -{ - return std::wstring(TEXT("open")); -} - -std::wstring RegistrationContextInformation::GetMOOXExcelSheetDisplayName() const -{ - std::wstring str; - str = TEXT("Microsoft Excel 2007 Spreadsheet"); - return str; -} - -std::wstring RegistrationContextInformation::GetMOOXExcelSheetFileExtension() const -{ - return std::wstring(TEXT(".xlsx")); -} - -std::wstring RegistrationContextInformation::GetExcelTemplateDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_MS_EXCEL_TEMPLATE"), str); - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("Microsoft Excel Template"); - return str; -} - -std::wstring RegistrationContextInformation::GetExcelTemplateFileExtension() const -{ - return std::wstring(TEXT(".xlt")); -} - -std::wstring RegistrationContextInformation::GetExcelTemplateDefaultIconEntry() const -{ - return m_OOExecPath + std::wstring(TEXT(",4")); -} - -std::wstring RegistrationContextInformation::GetExcelTemplateDefaultShellCommand() const -{ - return std::wstring(TEXT("new")); -} - -std::wstring RegistrationContextInformation::GetPowerPointDocumentDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_MS_POWERPOINT_PRESENTATION"), str); - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("Microsoft PowerPoint Presentation"); - return str; -} - -std::wstring RegistrationContextInformation::GetPowerPointDocumentFileExtension() const -{ - return std::wstring(TEXT(".ppt")); -} - -std::wstring RegistrationContextInformation::GetPowerPointDocumentDefaultIconEntry() const -{ - return m_OOExecPath + std::wstring(TEXT(",7")); -} - -std::wstring RegistrationContextInformation::GetPowerPointDocumentDefaultShellCommand() const -{ - return std::wstring(TEXT("open")); -} - -std::wstring RegistrationContextInformation::GetMOOXPowerPointDocumentDisplayName() const -{ - std::wstring str; - str = TEXT("Microsoft PowerPoint 2007 Presentation"); - return str; -} - -std::wstring RegistrationContextInformation::GetMOOXPowerPointDocumentFileExtension() const -{ - return std::wstring(TEXT(".pptx")); -} - -std::wstring RegistrationContextInformation::GetPowerPointTemplateDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_MS_POWERPOINT_TEMPLATE"), str); - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("Microsoft PowerPoint Template"); - return str; -} - -std::wstring RegistrationContextInformation::GetPowerPointTemplateFileExtension() const -{ - return std::wstring(TEXT(".pot")); -} - -std::wstring RegistrationContextInformation::GetPowerPointTemplateDefaultIconEntry() const -{ - return m_OOExecPath + std::wstring(TEXT(",8")); -} - -std::wstring RegistrationContextInformation::GetPowerPointTemplateDefaultShellCommand() const -{ - return std::wstring(TEXT("new")); -} - -std::wstring RegistrationContextInformation::GetPowerPointShowDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_MS_POWERPOINT_SHOW"), str); - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("Microsoft PowerPoint Show"); - return str; -} - -std::wstring RegistrationContextInformation::GetPowerPointShowFileExtension() const -{ - return std::wstring(TEXT(".pps")); -} - -std::wstring RegistrationContextInformation::GetPowerPointShowDefaultIconEntry() const -{ - return m_OOExecPath + std::wstring(TEXT(",7")); -} - -std::wstring RegistrationContextInformation::GetPowerPointShowDefaultShellCommand() const -{ - return std::wstring(TEXT("open")); -} - -//---------------------------------------------- -/** The string for the "New" command that should appear - in the Explorer context menu when someone right - clicks a Microsoft document -*/ -std::wstring RegistrationContextInformation::ShellNewCommandDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_NEW_DISPLAY_NAME"), str); - std::wstring::size_type idx = str.find(TEXT("~")); - - if(std::wstring::npos != idx) - str.replace(idx, 1, TEXT("&")); - - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("&New"); - - return str; -} - -/** The string for the "Edit" command that should - appear in the Explorer context menu when someone - right clicks a document -*/ -std::wstring RegistrationContextInformation::ShellEditCommandDisplayName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("STR_EDIT"), str); - std::wstring::size_type idx = str.find(TEXT("~")); - - if(std::wstring::npos != idx) - str.replace(idx, 1, TEXT("&")); - - if (m_IsWin9x && !IsConvertableToAnsi(str)) - str = TEXT("&Edit"); - - return str; -} - -std::wstring RegistrationContextInformation::GetOpenOfficeFriendlyAppName() const -{ - std::wstring str; - GetMsiProp(msihandle_, TEXT("ProductName"), str); - return str; -} - -std::wstring RegistrationContextInformation::GetOpenOfficeExecutablePath() const -{ - return m_OOExecPath; -} - -//---------------------------------------------- -/** The name of the executable (currently "soffice.exe" - but may change in the future, who knows) */ -std::wstring RegistrationContextInformation::GetOpenOfficeExecutableName() const -{ - return m_OOExecName; -} - -/** A command line for the specified shell command */ -std::wstring RegistrationContextInformation::GetOpenOfficeCommandline(SHELL_COMMAND ShellCommand, - OFFICE_APPLICATION OfficeApp) const -{ - // quote the path to OpenOffice, this is important - // for Windows 9x - std::wstring cmd_line = std::wstring(TEXT("\"")) + m_OOExecPath + std::wstring(TEXT("\"")); - - switch( OfficeApp ) - { - case Writer: - cmd_line += std::wstring( TEXT( " -writer" ) ); - break; - case Calc: - cmd_line += std::wstring( TEXT( " -calc" ) ); - break; - case Impress: - cmd_line += std::wstring( TEXT( " -impress" ) ); - break; - case Office: // default to std command line - break; - // default: no default to find new added enums at compile time - } - switch(ShellCommand) - { - case New: - cmd_line += std::wstring(TEXT(" -n \"%1\"")); - break; - case Open: - cmd_line += std::wstring(TEXT(" -o \"%1\"")); - break; - case Print: - cmd_line += std::wstring(TEXT(" -p \"%1\"")); - break; - case Printto: - cmd_line += std::wstring(TEXT(" -pt \"%2\" \"%1\"")); - break; - // default: no default to find new added enums at compile time - } - return cmd_line; -} - -bool RegistrationContextInformation::IsConvertableToAnsi(const std::wstring& String) const -{ - char buff[MAX_REGKEY_LENGTH_WIN9X]; - BOOL bUsedDefChar = 0; - - if (String.length() > 0) - { - WideCharToMultiByte( - CP_ACP, - WC_COMPOSITECHECK | WC_DEFAULTCHAR, - String.c_str(), - static_cast<int>(String.length()), - buff, - sizeof(buff), - NULL, - &bUsedDefChar); - } - return !bUsedDefChar; -} - -void RegistrationContextInformation::ExtractOpenOfficeExecNameFromPath() -{ - std::wstring::size_type idx = m_OOExecPath.find_last_of(TEXT('\\')); - assert(idx != std::wstring::npos); // assert valid path - m_OOExecName = m_OOExecPath.substr(idx + 1); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.hxx b/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.hxx deleted file mode 100644 index 832f67280..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registrationcontextinformation.hxx +++ /dev/null @@ -1,175 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// MsOfficeDocumentInformation.h: Schnittstelle f�r die Klasse MsOfficeDocumentInformation. -// -////////////////////////////////////////////////////////////////////// - -#ifndef _REGISTRATIONCONTEXTINFORMATION_HXX_ -#define _REGISTRATIONCONTEXTINFORMATION_HXX_ - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#define WIN32_LEAN_AND_MEAN -#include <windows.h> -#include <msi.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#include <string> - -/** A simple implementation class that returns the - appropriate display names for the Microsoft - Office document types. - Under Windows 9x this class checks if the - document display name is convertable to an ANSI - string and if not returns an english default. - So we avoid garbage if soemone for instance - installs an japanese StarOffice/OpenOffice - under a German Windows 98 for instance. -*/ -class RegistrationContextInformation -{ -public: - - enum SHELL_COMMAND {New, Open, Print, Printto}; - enum OFFICE_APPLICATION {Office, Writer, Calc, Impress}; - - RegistrationContextInformation(MSIHANDLE hMsi, const std::wstring& OpenOfficeExecutablePath); - - /** Word document information - The icon index is the index of the icon - in soffice.exe to be associated with - word document files - */ - std::wstring GetWordDocumentDisplayName() const; - std::wstring GetWordDocumentFileExtension() const; - std::wstring GetWordDocumentDefaultIconEntry() const; - std::wstring GetWordDocumentDefaultShellCommand() const; - - /** MOOX Word document information - The icon index is the index of the icon - in soffice.exe to be associated with - word document files - */ - std::wstring GetMOOXWordDocumentDisplayName() const; - std::wstring GetMOOXWordDocumentFileExtension() const; - - /** Word template information - The icon index is the index of the icon - in soffice.exe to be associated with - word template files - */ - std::wstring GetWordTemplateDisplayName() const; - std::wstring GetWordTemplateFileExtension() const; - std::wstring GetWordTemplateDefaultIconEntry() const; - std::wstring GetWordTemplateDefaultShellCommand() const; - - /** Rtf document information - The icon index is the index of the icon - in soffice.exe to be associated with - rtf document files - */ - std::wstring GetRtfDocumentDisplayName() const; - std::wstring GetRtfDocumentFileExtension() const; - std::wstring GetRtfDocumentDefaultIconEntry() const; - std::wstring GetRtfDocumentDefaultShellCommand() const; - - /** Excel sheet information - The icon index is the index of the icon - in soffice.exe to be associated with - Excel sheets - */ - std::wstring GetExcelSheetDisplayName() const; - std::wstring GetExcelSheetFileExtension() const; - std::wstring GetExcelSheetDefaultIconEntry() const; - std::wstring GetExcelSheetDefaultShellCommand() const; - - std::wstring GetMOOXExcelSheetDisplayName() const; - std::wstring GetMOOXExcelSheetFileExtension() const; - - /** Excel template information - The icon index is the index of the icon - in soffice.exe to be associated with - Excel template files - */ - std::wstring GetExcelTemplateDisplayName() const; - std::wstring GetExcelTemplateFileExtension() const; - std::wstring GetExcelTemplateDefaultIconEntry() const; - std::wstring GetExcelTemplateDefaultShellCommand() const; - - /** PowerPoint document information - The icon index is the index of the icon - in soffice.exe to be associated with - PowerPoint document files - */ - std::wstring GetPowerPointDocumentDisplayName() const; - std::wstring GetPowerPointDocumentFileExtension() const; - std::wstring GetPowerPointDocumentDefaultIconEntry() const; - std::wstring GetPowerPointDocumentDefaultShellCommand() const; - - std::wstring GetMOOXPowerPointDocumentDisplayName() const; - std::wstring GetMOOXPowerPointDocumentFileExtension() const; - - /** PowerPoint template information - The icon index is the index of the icon - in soffice.exe to be associated with - PowerPoint template files - */ - std::wstring GetPowerPointTemplateDisplayName() const; - std::wstring GetPowerPointTemplateFileExtension() const; - std::wstring GetPowerPointTemplateDefaultIconEntry() const; - std::wstring GetPowerPointTemplateDefaultShellCommand() const; - - /** PowerPoint Show information - */ - std::wstring GetPowerPointShowDisplayName() const; - std::wstring GetPowerPointShowFileExtension() const; - std::wstring GetPowerPointShowDefaultIconEntry() const; - std::wstring GetPowerPointShowDefaultShellCommand() const; - - /** The string for the "New" command that should appear - in the Explorer context menu when someone right - clicks a Microsoft document - */ - std::wstring ShellNewCommandDisplayName() const; - - /** The string for the "Edit" command that should - appear in the Explorer context menu when someone - right clicks a document - */ - std::wstring ShellEditCommandDisplayName() const; - - /** A friendly name for the application - */ - std::wstring GetOpenOfficeFriendlyAppName() const; - - /** The path to the StarOffice/OpenOffice executable - */ - std::wstring GetOpenOfficeExecutablePath() const; - - /** The name of the executable (currently "soffice.exe" - but may change in the future, who knows) - */ - std::wstring GetOpenOfficeExecutableName() const; - - /** A command line for the specified shell command - */ - std::wstring GetOpenOfficeCommandline(SHELL_COMMAND ShellCommand, - OFFICE_APPLICATION OfficeApp) const; - -private: - bool IsConvertableToAnsi(const std::wstring& String) const; - - void ExtractOpenOfficeExecNameFromPath(); - -private: - MSIHANDLE msihandle_; - bool m_IsWin9x; - std::wstring m_OOExecPath; - std::wstring m_OOExecName; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registry.cxx b/setup_native/source/win32/customactions/reg4msdoc/registry.cxx deleted file mode 100644 index d2201e076..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registry.cxx +++ /dev/null @@ -1,245 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#include "registry.hxx" - -#include <Shlwapi.h> -#include <assert.h> -#include <algorithm> - -#ifdef _MSC_VER -#pragma warning(disable : 4786 4350) -#endif - -//----------------------------------------------------- -/** Create instance and open the specified Registry key - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - RegistryKeyNotFoundException -*/ -RegistryKeyImpl::RegistryKeyImpl(HKEY RootKey, const std::wstring& KeyName) : - m_hRootKey(RootKey), - m_hSubKey(0), - m_KeyName(KeyName), - m_IsWriteable(false) -{ -} - -//----------------------------------------------------- -/** Create instance and open the specified Registry key - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - RegistryKeyNotFoundException -*/ -RegistryKeyImpl::RegistryKeyImpl(HKEY RootKey) : - m_hRootKey(RootKey), - m_hSubKey(0), - m_IsWriteable(false) -{ -} - -//----------------------------------------------------- -/** Create an instances of the specified Registry key, - the key is assumed to be already opened. -*/ -RegistryKeyImpl::RegistryKeyImpl(HKEY RootKey, HKEY SubKey, const std::wstring& KeyName, bool Writeable) : - m_hRootKey(RootKey), - m_hSubKey(SubKey), - m_KeyName(KeyName), - m_IsWriteable(Writeable) -{ -} - -//----------------------------------------------------- -/** -*/ -RegistryKeyImpl::~RegistryKeyImpl() -{ - if (IsOpen()) - Close(); -} - - -//############################################ -// Queries -//############################################ - - -//----------------------------------------------------- -/** The name of the key at hand, maybe empty - if this is any of the root keys -*/ -std::wstring RegistryKeyImpl::GetName() const -{ - return m_KeyName; -} - -//----------------------------------------------------- -/** -*/ -bool RegistryKeyImpl::IsOpen() const -{ - return m_hSubKey != 0; -} - -//----------------------------------------------------- -/** Is this one of the root keys - HKEY_CLASSES_ROOT - HKEY_CURRENT_USER - etc. -*/ -bool RegistryKeyImpl::IsRootKey() const -{ - return (0 == m_KeyName.length()); -} - -//----------------------------------------------------- -/** Do we have write access on the key at hand -*/ -bool RegistryKeyImpl::IsWriteable() const -{ - return m_IsWriteable; -} - -//----------------------------------------------------- -/** Convenience function to determine if the - Registry key at hand has the specified - value - - @precond IsOpen = true - - throws RegistryAccessDenyException -*/ -bool RegistryKeyImpl::HasValue(const std::wstring& Name) const -{ - StringListPtr names = GetSubValueNames(); - - StringList::iterator iter_end = names->end(); - StringList::iterator iter = std::find(names->begin(), iter_end, Name); - - return (iter != iter_end); -} - -struct CompareNamesCaseInsensitive -{ - CompareNamesCaseInsensitive(const std::wstring& Name) : - name_(Name) - {} - - bool operator() (const std::wstring& value) - { - return (0 == StrCmpI(value.c_str(), name_.c_str())); - } - - std::wstring name_; -}; - -//----------------------------------------------------- -/** Convenience function to determine if the - Registry key at hand has the specified - sub-key - - @precond IsOpen = true - - throws RegistryAccessDenyException -*/ -bool RegistryKeyImpl::HasSubKey(const std::wstring& Name) const -{ - StringListPtr names = GetSubKeyNames(); - - StringList::iterator iter_end = names->end(); - StringList::iterator iter = std::find_if(names->begin(), iter_end, CompareNamesCaseInsensitive(Name)); - - return (iter != iter_end); -} - -//----------------------------------------------------- -/** -*/ -void RegistryKeyImpl::Close() -{ - if (RegCloseKey(m_hSubKey) != ERROR_SUCCESS) { - assert(false); - } - - m_hSubKey = 0; - m_IsWriteable = false; -} - -//----------------------------------------------------- -/** Copies the specified value from RegistryKey to - the registry key at hand, if a value with this - name already exist under the registry key at hand - it will be overwritten - - @precond IsOpen = true - IsWriteable = true - RegistryKey.HasSubValue(Name) = true - - @throws RegistryIOException - RegistryWriteAccessDeniedException - RegistryValueNotFoundException -*/ -void RegistryKeyImpl::CopyValue(const RegistryKey& RegistryKey, const std::wstring& Name) -{ - assert(RegistryKey->HasValue(Name)); -#ifdef __MINGW32__ - SetValue((const RegistryValue&)(RegistryKey->GetValue(Name))); -#else - SetValue(RegistryKey->GetValue(Name)); -#endif - assert(HasValue(Name)); -} - -/** Copies the specified value from RegistryKey to - the registry key at hand under a new name, - if a value with this name already exist there - it will be overwritten - - @precond IsOpen = true - IsWriteable = true - RegistryKey.HasSubValue(Name) = true - - @throws RegistryIOException - RegistryWriteAccessDeniedException - RegistryValueNotFoundException -*/ -void RegistryKeyImpl::CopyValue(const RegistryKey& RegistryKey, const std::wstring& Name, const std::wstring& NewName) -{ - assert(RegistryKey->HasValue(Name)); - - RegistryValue RegVal = RegistryKey->GetValue(Name); - RegVal->SetName(NewName); - SetValue(RegVal); - - assert(HasValue(NewName)); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registry.hxx b/setup_native/source/win32/customactions/reg4msdoc/registry.hxx deleted file mode 100644 index 447336b2b..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registry.hxx +++ /dev/null @@ -1,337 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#ifndef _REGISTRY_HXX_ -#define _REGISTRY_HXX_ - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#include <windows.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#include <memory> -#include <vector> -#include <string> - -#include "registryvalueimpl.hxx" - -//--------------------------------------- -// forward declaration -//--------------------------------------- - -class RegistryKeyImpl; - -//--------------------------------------- -// typedefs -//--------------------------------------- - -typedef std::auto_ptr<RegistryKeyImpl> RegistryKey; -typedef std::vector<std::wstring> StringList; -typedef std::auto_ptr<StringList> StringListPtr; - -class RegistryKeyImpl -{ -public: - - //############################################ - // Destruction - //############################################ - - virtual ~RegistryKeyImpl(); - - - //############################################ - // Queries - //############################################ - - - /** The name of the key at hand, maybe empty - if this is any of the root keys - */ - std::wstring GetName() const; - - /** The number of sub values of the key at hand - - @precond IsOpen = true - - @throws - */ - virtual size_t GetSubValueCount() const = 0; - - /** The number of sub-keys of the key at hand - - @precond IsOpen = true - - @throws - */ - virtual size_t GetSubKeyCount() const = 0; - - bool IsOpen() const; - - /** Do we have write access on the key at hand - */ - bool IsWriteable() const; - - /** The StringList will be allocated on the heap, - so this is in fact a transfer of ownership - to the caller - - @precond IsOpen = true - - @throws RegistryIOException - */ - virtual StringListPtr GetSubKeyNames() const = 0; - - /** The StringList will be allocated on the heap, - so this is in fact a transfer of ownership - to the caller - - @precond IsOpen = true - - @throws RegistryIOException - */ - virtual StringListPtr GetSubValueNames() const = 0; - - /** Get the specified registry value - - @precond IsOpen = true - */ - virtual RegistryValue GetValue(const std::wstring& Name) const = 0; - - /** Get the specified registry value, return the given - default value if value not found - - @precond IsOpen = true - */ - virtual RegistryValue GetValue(const std::wstring& Name, const RegistryValue& Default) const = 0; - - /** Convenience function to determine if the - Registry key at hand has the specified - value - - @precond IsOpen = true - - throws RegistryAccessDenyException - */ - bool HasValue(const std::wstring& Name) const; - - /** Convenience function to determine if the - Registry key at hand has the specified - sub-key - - @precond IsOpen = true - - throws RegistryAccessDenyException - */ - bool HasSubKey(const std::wstring& Name) const; - - - //############################################ - // Commands - //############################################ - - - /** Open the registry key, has no effect if - the key is already open - - @precond IsOpen = false - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - */ - virtual void Open(bool Writeable = true) = 0; - - /** Close the registry key at hand, further - using it without re-opening may cause - RegistryIOExceptions to be thrown - - This is a template method that calls - ImplClose which has to be overwritten - by sub-classes - */ - void Close(); - - /** Open the specified sub-key of the registry key - at hand - - @precond IsOpen = true - HasSubKey(Name) = true - - @throws RegistryIOException - RegistryKeyNotFoundException - RegistryAccessDeniedException - */ - virtual RegistryKey OpenSubKey(const std::wstring& Name, bool Writeable = true) = 0; - - /** Creates a new sub-key below the key at hand - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual RegistryKey CreateSubKey(const std::wstring& Name) = 0; - - /** Deletes a sub-key below the key at hand, the - key must not have sub-keys - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual void DeleteSubKey(const std::wstring& Name) = 0; - - /** Deletes a sub-key below the key at hand with all - its sub-keys - - @precond IsOpen = true - IsWriteable = true; - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual void DeleteSubKeyTree(const std::wstring& Name) = 0; - - /** Delete the specified value - - @precond IsOpen = true - IsWriteable = true - HasValue(Name) = true - - @throws RegistryIOException - RegistryWriteAccessDeniedException - RegistryValueNotFoundException - */ - virtual void DeleteValue(const std::wstring& Name) = 0; - - /** Set the specified registry value - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual void SetValue(const RegistryValue& Value) = 0; - - - /** Copies the specified value from RegistryKey to - the registry key at hand, if a value with this - name already exist under the registry key at hand - it will be overwritten - - @precond IsOpen = true - IsWriteable = true - RegistryKey.HasSubValue(Name) = true - - @throws RegistryIOException - RegistryWriteAccessDeniedException - RegistryValueNotFoundException - */ - virtual void CopyValue(const RegistryKey& RegistryKey, const std::wstring& Name); - - /** Copies the specified value from RegistryKey to - the registry key at hand under a new name, - if a value with this name already exist there - it will be overwritten - - @precond IsOpen = true - IsWriteable = true - RegistryKey.HasSubValue(Name) = true - - @throws RegistryIOException - RegistryWriteAccessDeniedException - RegistryValueNotFoundException - */ - virtual void CopyValue(const RegistryKey& RegistryKey, const std::wstring& Name, const std::wstring& NewName); - - //############################################ - // Creation - // only possible through WindowsRegistry class - //############################################ - - -protected: - /** Create instance of the specified Registry key - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - RegistryKeyNotFoundException - */ - RegistryKeyImpl(HKEY RootKey, const std::wstring& KeyName); - - /** Create instance of the specified Registry key. - RootKey should only one of the predefined - keys HKEY_CLASSES_ROOT, HKEY_CURRENT_USER, - HKEY_LOCAL_MACHINE, HKEY_USERS - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - RegistryKeyNotFoundException - */ - RegistryKeyImpl(HKEY RootKey); - - /** Create an instances of the specified Registry key, - the key is assumed to be already opened. - */ - RegistryKeyImpl(HKEY RootKey, HKEY SubKey, const std::wstring& KeyName, bool Writeable = true); - - /** Is this one of the root keys - HKEY_CLASSES_ROOT - HKEY_CURRENT_USER - etc. - */ - bool IsRootKey() const; - -protected: - HKEY m_hRootKey; - HKEY m_hSubKey; - std::wstring m_KeyName; - bool m_IsWriteable; - -// prevent copy and assignment -private: - RegistryKeyImpl(const RegistryKeyImpl&); - RegistryKeyImpl& operator=(const RegistryKeyImpl&); - -//###################################### -// Friend declarations -//###################################### - -friend class WindowsRegistry; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registryexception.cxx b/setup_native/source/win32/customactions/reg4msdoc/registryexception.cxx deleted file mode 100644 index d4fc34d0d..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registryexception.cxx +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// RegistryException.cpp: Implementierung der Klasse RegistryException. -// -////////////////////////////////////////////////////////////////////// - -#include "registryexception.hxx" - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#include <windows.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -////////////////////////////////////////////////////////////////////// -// Konstruktion/Destruktion -////////////////////////////////////////////////////////////////////// - -RegistryException::RegistryException(long ErrorCode) : - m_ErrorCode(ErrorCode), - m_ErrorMsg(0) -{ -} - -RegistryException::~RegistryException() throw() -{ - if (m_ErrorMsg) - LocalFree(m_ErrorMsg); -} - -const char* RegistryException::what() const throw() -{ - FormatMessage( - FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - m_ErrorCode, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), // Default language - (LPTSTR) &m_ErrorMsg, - 0, - NULL); - - return reinterpret_cast<char*>(m_ErrorMsg); -} - -long RegistryException::GetErrorCode() const -{ - return m_ErrorCode; -} - -//####################################### -// Thrown when a Registry key is accessed -// that is closed -//####################################### - -RegistryIOException::RegistryIOException(long ErrorCode) : - RegistryException(ErrorCode) -{ -}; - -RegistryNoWriteAccessException::RegistryNoWriteAccessException(long ErrorCode) : - RegistryException(ErrorCode) -{ -}; - -RegistryAccessDeniedException::RegistryAccessDeniedException(long ErrorCode) : - RegistryException(ErrorCode) -{ -}; - -RegistryValueNotFoundException::RegistryValueNotFoundException(long ErrorCode) : - RegistryException(ErrorCode) -{ -}; - -RegistryKeyNotFoundException::RegistryKeyNotFoundException(long ErrorCode) : - RegistryException(ErrorCode) -{ -}; - -RegistryInvalidOperationException::RegistryInvalidOperationException(long ErrorCode) : - RegistryException(ErrorCode) -{ -}; - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registryexception.hxx b/setup_native/source/win32/customactions/reg4msdoc/registryexception.hxx deleted file mode 100644 index 96ce60367..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registryexception.hxx +++ /dev/null @@ -1,107 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// RegistryException.h: Schnittstelle für die Klasse RegistryException. -// -////////////////////////////////////////////////////////////////////// - -#ifndef _REGISTRYEXCEPTION_HXX_ -#define _REGISTRYEXCEPTION_HXX_ - -#include <exception> - -//####################################### -// Base class for all Registry exceptions -//####################################### - -class RegistryException : public std::exception -{ -public: - - RegistryException(long ErrorCode); - - virtual ~RegistryException() throw(); - - /** - @descr Returns a string that describes the error if - available, else NULL will be returned. The - returned string is only temporary so the caller - has to copy it if he needs the string further. - */ - virtual const char* what() const throw(); - - /** - @descr Returns the error code. - */ - - long GetErrorCode() const; - -private: - long m_ErrorCode; - void* m_ErrorMsg; -}; - -//####################################### -// Thrown when a Registry key is accessed -// that is closed -//####################################### - -class RegistryIOException : public RegistryException -{ -public: - RegistryIOException(long ErrorCode); -}; - -//####################################### -// Thrown when trying to write to a readonly registry key -//####################################### - -class RegistryNoWriteAccessException : public RegistryException -{ -public: - RegistryNoWriteAccessException(long ErrorCode); -}; - -//####################################### -// Thrown when trying to access an registry key, with improper -// access rights -//####################################### - -class RegistryAccessDeniedException : public RegistryException -{ -public: - RegistryAccessDeniedException(long ErrorCode); -}; - -//####################################### -// A specified registry value could not be read because it is not -// available -//####################################### - -class RegistryValueNotFoundException : public RegistryException -{ -public: - RegistryValueNotFoundException(long ErrorCode); -}; - -//####################################### -// A specified registry key was not found -//####################################### - -class RegistryKeyNotFoundException : public RegistryException -{ -public: - RegistryKeyNotFoundException(long ErrorCode); -}; - -//####################################### -// A specified registry operation is invalid -//####################################### - -class RegistryInvalidOperationException : public RegistryException -{ -public: - RegistryInvalidOperationException(long ErrorCode); -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registryvalueimpl.cxx b/setup_native/source/win32/customactions/reg4msdoc/registryvalueimpl.cxx deleted file mode 100644 index 71501a8a6..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registryvalueimpl.cxx +++ /dev/null @@ -1,192 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// RegistryValueImpl.cpp: Implementierung der Klasse RegistryValueImpl. -// -////////////////////////////////////////////////////////////////////// - -#include "registryvalueimpl.hxx" - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#include <windows.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#include <malloc.h> -#include <assert.h> - -#include "stringconverter.hxx" - -//################################# -// Creation/Destruction -//################################# - -//-------------------------------------------- -/** -*/ -RegistryValueImpl::RegistryValueImpl(const std::wstring& Name, int Value) : - m_Name(Name), - m_Type(REG_DWORD), - m_IntData(Value) -{ -} - -//-------------------------------------------- -/** -*/ -RegistryValueImpl::RegistryValueImpl(const std::wstring& Name, const std::wstring& Value) : - m_Name(Name), - m_Type(REG_SZ), - m_StringData(Value), - m_IntData(0) -{ -} - -//-------------------------------------------- -/** -*/ -RegistryValueImpl::RegistryValueImpl(const std::wstring& Name, const std::string& Value) : - m_Name(Name), - m_Type(REG_SZ), - m_IntData(0) -{ - m_StringData = AnsiToUnicodeString(Value); -} - -#if (_MSC_VER >= 1300) -RegistryValueImpl::RegistryValueImpl(const RegistryValueImpl& s) : - m_Name(s.m_Name), - m_Type(s.m_Type), - m_StringData(s.m_StringData), - m_IntData(s.m_IntData) - { -} -#endif -//-------------------------------------------- -/** -*/ -RegistryValueImpl::~RegistryValueImpl() -{ -} - -//################################# -// Query -//################################# - -//-------------------------------------------- -/** Returns the name of the value -*/ -std::wstring RegistryValueImpl::GetName() const -{ - return m_Name; -} - -//-------------------------------------------- -/** Return the size of data held -*/ -size_t RegistryValueImpl::GetDataSize() const -{ - size_t size = 0; - - if (REG_DWORD == m_Type) - size = sizeof(m_IntData); - else if (REG_SZ == m_Type) - size = m_StringData.length() ? ((m_StringData.length() + 1) * sizeof(wchar_t)) : 0; - - return size; -} - -//-------------------------------------------- -/** Get a pointer to the data buffer - in order to copy the data -*/ -const void* RegistryValueImpl::GetDataBuffer() const -{ - const void* pData = 0; - - if (REG_DWORD == m_Type) - pData = reinterpret_cast<const void*>(&m_IntData); - else if (REG_SZ == m_Type) - pData = reinterpret_cast<const void*>(m_StringData.c_str()); - - return pData; -} - -//-------------------------------------------- -/** Returns the data as string -*/ -std::wstring RegistryValueImpl::GetDataAsUniString() const -{ - assert(REG_SZ == m_Type); - return m_StringData; -} - -//-------------------------------------------- -/** Returns the data as string -*/ -std::string RegistryValueImpl::GetDataAsAnsiString() const -{ - assert(REG_SZ == m_Type); - return UnicodeToAnsiString(m_StringData); -} - -//-------------------------------------------- -/** Returns the data as number -*/ -int RegistryValueImpl::GetDataAsInt() const -{ - assert(REG_DWORD == m_Type); - return m_IntData; -} - -//-------------------------------------------- -/** Returns the type of the data -*/ -int RegistryValueImpl::GetType() const -{ - return m_Type; -} - - -//################################# -// Command -//################################# - - -//-------------------------------------------- -/** Set a new name -*/ -void RegistryValueImpl::SetName(const std::wstring& NewName) -{ - m_Name = NewName; -} - -//-------------------------------------------- -/** -*/ -void RegistryValueImpl::SetValue(const std::wstring& NewValue) -{ - m_Type = REG_SZ; - m_StringData = NewValue; -} - -//-------------------------------------------- -/** -*/ -void RegistryValueImpl::SetValue(const std::string& NewValue) -{ - m_Type = REG_SZ; - m_StringData = AnsiToUnicodeString(NewValue); -} - -//-------------------------------------------- -/** -*/ -void RegistryValueImpl::SetValue(int NewValue) -{ - m_Type = REG_DWORD; - m_IntData = NewValue; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registryvalueimpl.hxx b/setup_native/source/win32/customactions/reg4msdoc/registryvalueimpl.hxx deleted file mode 100644 index 48bfcea9b..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registryvalueimpl.hxx +++ /dev/null @@ -1,111 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// RegistryValueImpl.h: Schnittstelle für die Klasse RegistryValueImpl. -// -////////////////////////////////////////////////////////////////////// - -#ifndef _REGISTRYVALUEIMPL_HXX_ -#define _REGISTRYVALUEIMPL_HXX_ - -#include <memory> -#include <string> - -class RegistryValueImpl -{ -public: - - //################################# - // Creation/Destruction - //################################# - - RegistryValueImpl(const std::wstring& Name, int Value); - - RegistryValueImpl(const std::wstring& Name, const std::wstring& Value); - - RegistryValueImpl(const std::wstring& Name, const std::string& Value); - - #if (_MSC_VER >= 1300) - RegistryValueImpl::RegistryValueImpl(const RegistryValueImpl& s); - #endif - - virtual ~RegistryValueImpl(); - - - //################################# - // Query - //################################# - - - /** Returns the name of the value - */ - std::wstring GetName() const; - - /** Return the size of data held - */ - size_t GetDataSize() const; - - /** Get a pointer to the data buffer - in order to copy the data - */ - const void* GetDataBuffer() const; - - /** Returns the data as unicode string - - @precond GetType = STRING - */ - std::wstring GetDataAsUniString() const; - - /** Returns the data as ansi string - - @precond GetType = STRING - */ - std::string GetDataAsAnsiString() const; - - /** Returns the data as number - - @precond GetType = NUMBER - */ - int GetDataAsInt() const; - - /** Returns the type of the data - */ - int GetType() const; - - //################################# - // Command - //################################# - - - /** Set a new name - */ - void SetName(const std::wstring& NewName); - - /** - */ - void SetValue(const std::wstring& NewValue); - - /** - */ - void SetValue(const std::string& NewValue); - - /** - */ - void SetValue(int NewValue); - - //################################# - // Private data - //################################# - -private: - std::wstring m_Name; - int m_Type; - std::wstring m_StringData; - int m_IntData; -}; - - -typedef std::auto_ptr<RegistryValueImpl> RegistryValue; - - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx b/setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx deleted file mode 100644 index fa860ee62..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registryw9x.cxx +++ /dev/null @@ -1,538 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#include "registryw9x.hxx" - -#include <windows.h> -#include <malloc.h> -#include "registryvalueimpl.hxx" -#include "registryexception.hxx" -#include "stringconverter.hxx" - -#include <assert.h> - -#ifdef _MSC_VER -#pragma warning(disable : 4786 4350) -#endif - -const size_t MAX_TMP_BUFF_SIZE = 1024 * sizeof(wchar_t); - - -//############################################ -// Creation -// only possible through WindowsRegistry class -//############################################ - - -//----------------------------------------------------- -/** Create instance and open the specified Registry key -*/ -RegistryKeyImplWin9x::RegistryKeyImplWin9x(HKEY RootKey, const std::wstring& KeyName) : - RegistryKeyImpl(RootKey, KeyName) -{ -} - -//----------------------------------------------------- -/** Create instance and open the specified Registry key -*/ -RegistryKeyImplWin9x::RegistryKeyImplWin9x(HKEY RootKey) : - RegistryKeyImpl(RootKey) -{ -} - -//----------------------------------------------------- -/** Create an instances of the specified Registry key, - the key is assumed to be already opened. -*/ -RegistryKeyImplWin9x::RegistryKeyImplWin9x(HKEY RootKey, HKEY SubKey, const std::wstring& KeyName, bool Writeable) : - RegistryKeyImpl(RootKey, SubKey, KeyName, Writeable) -{ -} - - -//############################################ -// Queries -//############################################ - - -//----------------------------------------------------- -/** The number of sub values of the key at hand - - @precond IsOpen = true - - @throws -*/ -size_t RegistryKeyImplWin9x::GetSubValueCount() const -{ - assert(IsOpen()); - - DWORD nSubValues = 0; - - LONG rc = RegQueryInfoKeyA( - m_hSubKey, - 0, 0, 0, 0, 0, 0, &nSubValues, 0, 0, 0, 0); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - return nSubValues; -} - -//----------------------------------------------------- -/** The number of sub-keys of the key at hand - - @precond IsOpen = true - - @throws -*/ -size_t RegistryKeyImplWin9x::GetSubKeyCount() const -{ - assert(IsOpen()); - - DWORD nSubKeys = 0; - - LONG rc = RegQueryInfoKeyA( - m_hSubKey, - 0, 0, 0, &nSubKeys, 0, 0, 0, 0, 0, 0, 0); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - return nSubKeys; -} - -StringListPtr RegistryKeyImplWin9x::GetSubKeyNames() const -{ - assert(IsOpen()); - - char buff[1024]; - DWORD buff_size = sizeof(buff); - FILETIME ftime; - - StringList* key_names = new StringList(); - - LONG rc = ERROR_SUCCESS; - - for (DWORD i = 0; /* left empty */; i++) - { - rc = RegEnumKeyExA( - m_hSubKey, i, buff, &buff_size, - 0, 0, 0, &ftime); - - if (ERROR_SUCCESS != rc && - ERROR_MORE_DATA != rc) - break; - - buff_size = sizeof(buff); - - key_names->push_back(AnsiToUnicodeString(buff)); - } - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_NO_MORE_ITEMS != rc && ERROR_SUCCESS != rc) - throw RegistryException(rc); - - return (StringListPtr) key_names; -} - -StringListPtr RegistryKeyImplWin9x::GetSubValueNames() const -{ - assert(IsOpen()); - - char buff[1024]; - DWORD buff_size = sizeof(buff); - - StringList* value_names = new StringList(); - - LONG rc = ERROR_SUCCESS; - - for (DWORD i = 0; /* left empty */; i++) - { - rc = RegEnumValueA( - m_hSubKey, i, buff, &buff_size, - 0, 0, 0, 0); - - if (ERROR_SUCCESS != rc && - ERROR_MORE_DATA != rc) - break; - - buff_size = sizeof(buff); - - value_names->push_back(AnsiToUnicodeString(buff)); - } - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_NO_MORE_ITEMS != rc && ERROR_SUCCESS != rc) - throw RegistryException(rc); - - return (StringListPtr) value_names; -} - -//----------------------------------------------------- -/** Get the specified registry value - - @precond IsOpen = true -*/ -RegistryValue RegistryKeyImplWin9x::GetValue(const std::wstring& Name) const -{ - assert(IsOpen()); - - DWORD Type; - char buff[MAX_TMP_BUFF_SIZE]; - DWORD size = sizeof(buff); - - LONG rc = RegQueryValueExA( - m_hSubKey, - UnicodeToAnsiString(Name).c_str(), - 0, - &Type, - reinterpret_cast<LPBYTE>(buff), - &size); - - if (ERROR_FILE_NOT_FOUND == rc) - throw RegistryValueNotFoundException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - RegistryValue regval; - - if (REG_DWORD == Type) - { - regval = RegistryValue(new RegistryValueImpl(Name, *(reinterpret_cast<int*>(buff)))); - } - else if (REG_SZ == Type || REG_EXPAND_SZ == Type || REG_MULTI_SZ == Type) - { - if (size > 0) - regval = RegistryValue(new RegistryValueImpl(Name, std::string(reinterpret_cast<char*>(buff)))); - else - regval = RegistryValue(new RegistryValueImpl(Name, std::string())); - } - else - { - assert(false); - } - - return regval; -} - -//----------------------------------------------------- -/** Get the specified registry value, return the given - default value if value not found - - @precond IsOpen = true -*/ -RegistryValue RegistryKeyImplWin9x::GetValue(const std::wstring& Name, const RegistryValue& Default) const -{ - assert(IsOpen()); - - DWORD Type; - char buff[MAX_TMP_BUFF_SIZE]; - DWORD size = sizeof(buff); - - LONG rc = RegQueryValueExA( - m_hSubKey, - UnicodeToAnsiString(Name).c_str(), - 0, - &Type, - reinterpret_cast<LPBYTE>(buff), - &size); - - if (ERROR_FILE_NOT_FOUND == rc) - { - #if !defined(__MINGW32__) && (_MSC_VER < 1300) - return Default; - #else - RegistryValue regval_ptr; - regval_ptr = RegistryValue(new RegistryValueImpl(*Default)); - return regval_ptr; - #endif - } - - if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - RegistryValue regval; - - if (REG_DWORD == Type) - regval = RegistryValue(new RegistryValueImpl(Name, *reinterpret_cast<int*>(buff))); - else if (REG_SZ == Type || REG_EXPAND_SZ == Type || REG_MULTI_SZ == Type) - regval = RegistryValue(new RegistryValueImpl(Name, std::string(reinterpret_cast<char*>(buff)))); - else - assert(false); - - return regval; -} - - -//############################################ -// Commands -//############################################ - - -//----------------------------------------------------- -/** Open the registry key, has no effect if - the key is already open - - @precond IsOpen = false - - @throws RegistryKeyNotFoundException - RegistryWriteAccessDenyException - RegistryAccessDenyException -*/ -void RegistryKeyImplWin9x::Open(bool Writeable) -{ - assert(!IsOpen()); - - REGSAM regsam = KEY_READ; - - if (Writeable) - regsam |= KEY_WRITE; - - LONG rc = RegOpenKeyExA( - m_hRootKey, - UnicodeToAnsiString(m_KeyName).c_str(), - 0, - regsam, - &m_hSubKey); - - if (ERROR_FILE_NOT_FOUND == rc) - throw RegistryKeyNotFoundException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - m_IsWriteable = Writeable; - - assert(IsOpen()); -} - -//----------------------------------------------------- -/** Open the specified sub-key of the registry key - at hand - - @precond IsOpen = true - HasSubKey(Name) = true - - @throws RegistryIOException - RegistryKeyNotFoundException - RegistryAccessDeniedException -*/ -RegistryKey RegistryKeyImplWin9x::OpenSubKey(const std::wstring& Name, bool Writeable) -{ - RegistryKey regkey(new RegistryKeyImplWin9x(m_hSubKey, Name)); - regkey->Open(Writeable); - return regkey; -} - -//----------------------------------------------------- -/** Creates a new sub-key below the key at hand - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException -*/ - -RegistryKey RegistryKeyImplWin9x::CreateSubKey(const std::wstring& Name) -{ - assert(IsOpen()); - assert(IsWriteable()); - - HKEY hRoot = IsRootKey() ? m_hRootKey : m_hSubKey; - - HKEY hKey; - - LONG rc = RegCreateKeyExA( - hRoot, - UnicodeToAnsiString(Name).c_str(), - 0, - 0, - REG_OPTION_NON_VOLATILE, - KEY_READ | KEY_WRITE, - 0, - &hKey, - 0); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - return RegistryKey(new RegistryKeyImplWin9x(hRoot, hKey, Name)); -} - -//----------------------------------------------------- -/** Deletes a sub-key below the key at hand, the - key must not have sub-keys - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException -*/ -void RegistryKeyImplWin9x::DeleteSubKey(const std::wstring& Name) -{ - assert(IsOpen()); - assert(IsWriteable()); - assert(HasSubKey(Name)); - - RegistryKey SubKey = OpenSubKey(Name); - - size_t nSubKeyCount = SubKey->GetSubKeyCount(); - - assert(0 == nSubKeyCount); - - if (nSubKeyCount) - throw RegistryInvalidOperationException(ERROR_NOT_SUPPORTED); - - LONG rc = RegDeleteKeyA(m_hSubKey, UnicodeToAnsiString(Name).c_str()); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); -} - -//----------------------------------------------------- -/** Deletes a sub-key below the key at hand with all - its sub-keys - - @precond IsOpen = true - IsWriteable = true; - - @throws RegistryIOException - RegistryWriteAccessDenyException -*/ -void RegistryKeyImplWin9x::DeleteSubKeyTree(const std::wstring& Name) -{ - LONG rc = RegDeleteKeyA(m_hSubKey, UnicodeToAnsiString(Name).c_str()); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); -} - -//----------------------------------------------------- -/** Delete the specified value - - @precond IsOpen = true - IsWriteable = true - HasValue(Name) = true - - @throws RegistryIOException - RegistryWriteAccessDeniedException - RegistryValueNotFoundException -*/ -void RegistryKeyImplWin9x::DeleteValue(const std::wstring& Name) -{ - assert(IsOpen()); - assert(HasValue(Name)); - assert(IsWriteable()); - - LONG rc = RegDeleteValueA( - m_hSubKey, - UnicodeToAnsiString(Name).c_str()); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryNoWriteAccessException(rc); - else if (ERROR_FILE_NOT_FOUND == rc) - throw RegistryValueNotFoundException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); -} - -//----------------------------------------------------- -/** Set the specified registry value - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException -*/ -void RegistryKeyImplWin9x::SetValue(const RegistryValue& Value) -{ - assert(IsOpen()); - assert(IsWriteable()); - - LONG rc = ERROR_SUCCESS; - - if (REG_SZ == Value->GetType()) - { - std::string AnsiStr = Value->GetDataAsAnsiString(); - - rc = RegSetValueExA( - m_hSubKey, - UnicodeToAnsiString(Value->GetName()).c_str(), - 0, - Value->GetType(), - reinterpret_cast<const unsigned char*>(AnsiStr.c_str()), - static_cast<DWORD>((AnsiStr.length() + 1))); - } - else - { - rc = RegSetValueExA( - m_hSubKey, - UnicodeToAnsiString(Value->GetName()).c_str(), - 0, - Value->GetType(), - reinterpret_cast<const unsigned char*>(Value->GetDataBuffer()), - static_cast<DWORD>(Value->GetDataSize())); - } - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registryw9x.hxx b/setup_native/source/win32/customactions/reg4msdoc/registryw9x.hxx deleted file mode 100644 index aa3d58fa8..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registryw9x.hxx +++ /dev/null @@ -1,201 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#ifndef _REGISTRYW9X_HXX_ -#define _REGISTRYW9X_HXX_ - -#include "registry.hxx" - -//--------------------------------------- -// constants -//--------------------------------------- - -class RegistryKeyImplWin9x : public RegistryKeyImpl -{ -public: - - //############################################ - // Queries - //############################################ - - /** The number of sub values of the key at hand - - @precond IsOpen = true - - @throws - */ - virtual size_t GetSubValueCount() const; - - /** The number of sub-keys of the key at hand - - @precond IsOpen = true - - @throws - */ - virtual size_t GetSubKeyCount() const; - - virtual StringListPtr GetSubKeyNames() const; - - virtual StringListPtr GetSubValueNames() const; - - /** Get the specified registry value - - @precond IsOpen = true - */ - virtual RegistryValue GetValue(const std::wstring& Name) const; - - /** Get the specified registry value, return the given - default value if value not found - - @precond IsOpen = true - */ - virtual RegistryValue GetValue(const std::wstring& Name, const RegistryValue& Default) const; - - //############################################ - // Commands - //############################################ - - /** Open the registry key, has no effect if - the key is already open - - @precond IsOpen = false - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - */ - virtual void Open(bool Writeable = true); - - /** Open the specified sub-key of the registry key - at hand - - @precond IsOpen = true - HasSubKey(Name) = true - - @throws RegistryIOException - RegistryKeyNotFoundException - RegistryAccessDeniedException - */ - virtual RegistryKey OpenSubKey(const std::wstring& Name, bool Writeable = true); - - /** Creates a new sub-key below the key at hand - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual RegistryKey CreateSubKey(const std::wstring& Name); - - /** Deletes a sub-key below the key at hand, the - key must not have sub-keys - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual void DeleteSubKey(const std::wstring& Name); - - /** Deletes a sub-key below the key at hand with all - its sub-keys - - @precond IsOpen = true - IsWriteable = true; - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual void DeleteSubKeyTree(const std::wstring& Name); - - /** Delete the specified value - - @precond IsOpen = true - IsWriteable = true - HasValue(Name) = true - - @throws RegistryIOException - RegistryWriteAccessDeniedException - RegistryValueNotFoundException - */ - virtual void DeleteValue(const std::wstring& Name); - - /** Set the specified registry value - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual void SetValue(const RegistryValue& Value); - - //############################################ - // Creation - // - // only possible through WindowsRegistry class - //############################################ - -protected: - /** Create instance and open the specified Registry key - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - RegistryKeyNotFoundException - */ - RegistryKeyImplWin9x(HKEY RootKey, const std::wstring& KeyName); - - /** Create instance and open the specified Registry key - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - RegistryKeyNotFoundException - */ - RegistryKeyImplWin9x(HKEY RootKey); - - /** Create an instances of the specified Registry key, - the key is assumed to be already opened. - */ - RegistryKeyImplWin9x(HKEY RootKey, HKEY SubKey, const std::wstring& KeyName, bool Writeable = true); - -// prevent copy/assignment -private: - RegistryKeyImplWin9x(const RegistryKeyImplWin9x&); - RegistryKeyImplWin9x& operator=(const RegistryKeyImplWin9x&); - -//###################################### -// Friend declarations -//###################################### - -friend class WindowsRegistry; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registrywnt.cxx b/setup_native/source/win32/customactions/reg4msdoc/registrywnt.cxx deleted file mode 100644 index 1b7b8dfe7..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registrywnt.cxx +++ /dev/null @@ -1,607 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#include <windows.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#include <malloc.h> -#include "registrywnt.hxx" -#include "registryvalueimpl.hxx" -#include "registryexception.hxx" - -#include <assert.h> - -#ifdef _MSC_VER -#pragma warning(disable : 4786 4350) -#endif - -const size_t MAX_TMP_BUFF_SIZE = 1024 * sizeof(wchar_t); - - -//############################################ -// Creation -// only possible through WindowsRegistry class -//############################################ - - -//----------------------------------------------------- -/** Create instance and open the specified Registry key -*/ -RegistryKeyImplWinNT::RegistryKeyImplWinNT(HKEY RootKey, const std::wstring& KeyName) : - RegistryKeyImpl(RootKey, KeyName) -{ -} - -//----------------------------------------------------- -/** Create instance and open the specified Registry key -*/ -RegistryKeyImplWinNT::RegistryKeyImplWinNT(HKEY RootKey) : - RegistryKeyImpl(RootKey) -{ -} - -//----------------------------------------------------- -/** Create an instances of the specified Registry key, - the key is assumed to be already opened. -*/ -RegistryKeyImplWinNT::RegistryKeyImplWinNT(HKEY RootKey, HKEY SubKey, const std::wstring& KeyName, bool Writeable) : - RegistryKeyImpl(RootKey, SubKey, KeyName, Writeable) -{ -} - - -//############################################ -// Queries -//############################################ - - -//----------------------------------------------------- -/** The number of sub values of the key at hand - - @precond IsOpen = true - - @throws -*/ -size_t RegistryKeyImplWinNT::GetSubValueCount() const -{ - assert(IsOpen()); - - DWORD nSubValues = 0; - - LONG rc = RegQueryInfoKeyW( - m_hSubKey, - 0, 0, 0, 0, 0, 0, &nSubValues, 0, 0, 0, 0); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - return nSubValues; -} - -//----------------------------------------------------- -/** The number of sub-keys of the key at hand - - @precond IsOpen = true - - @throws -*/ -size_t RegistryKeyImplWinNT::GetSubKeyCount() const -{ - assert(IsOpen()); - - DWORD nSubKeys = 0; - - LONG rc = RegQueryInfoKeyA( - m_hSubKey, - 0, 0, 0, &nSubKeys, 0, 0, 0, 0, 0, 0, 0); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - return nSubKeys; -} - -StringListPtr RegistryKeyImplWinNT::GetSubKeyNames() const -{ - assert(IsOpen()); - - wchar_t buff[1024]; - DWORD buff_size = sizeof(buff); - FILETIME ftime; - - StringList* key_names = new StringList(); - - LONG rc = ERROR_SUCCESS; - - for (DWORD i = 0; /* left empty */; i++) - { - rc = RegEnumKeyExW( - m_hSubKey, i, buff, &buff_size, - 0, 0, 0, &ftime); - - if (ERROR_SUCCESS != rc && - ERROR_MORE_DATA != rc) - break; - - buff_size = sizeof(buff); - - key_names->push_back(buff); - } - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_NO_MORE_ITEMS != rc && ERROR_SUCCESS != rc) - throw RegistryException(rc); - -#if (_MSC_VER < 1300) && !defined(__MINGW32__) - return key_names; -#else - return (StringListPtr) key_names; -#endif -} - -StringListPtr RegistryKeyImplWinNT::GetSubValueNames() const -{ - assert(IsOpen()); - - wchar_t buff[1024]; - DWORD buff_size = sizeof(buff); - - StringList* value_names = new StringList(); - - LONG rc = ERROR_SUCCESS; - - for (DWORD i = 0; /* left empty */; i++) - { - rc = RegEnumValueW( - m_hSubKey, i, buff, &buff_size, - 0, 0, 0, 0); - - if (ERROR_SUCCESS != rc && - ERROR_MORE_DATA != rc) - break; - - buff_size = sizeof(buff); - - value_names->push_back(buff); - } - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_NO_MORE_ITEMS != rc && ERROR_SUCCESS != rc) - throw RegistryException(rc); - -#if (_MSC_VER < 1300) && !defined(__MINGW32__) - return value_names; -#else - return (StringListPtr) value_names; -#endif -} - -//----------------------------------------------------- -/** Get the specified registry value - - @precond IsOpen = true -*/ -RegistryValue RegistryKeyImplWinNT::GetValue(const std::wstring& Name) const -{ - assert(IsOpen()); - - DWORD Type; - wchar_t buff[MAX_TMP_BUFF_SIZE]; - DWORD size = sizeof(buff); - - LONG rc = RegQueryValueExW( - m_hSubKey, - Name.c_str(), - 0, - &Type, - reinterpret_cast<LPBYTE>(buff), - &size); - - if (ERROR_FILE_NOT_FOUND == rc) - throw RegistryValueNotFoundException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - RegistryValue regval; - - if (REG_DWORD == Type) - { - regval = RegistryValue(new RegistryValueImpl(Name, *(reinterpret_cast<int*>(buff)))); - } - else if (REG_SZ == Type || REG_EXPAND_SZ == Type || REG_MULTI_SZ == Type) - { - if (size > 0) - regval = RegistryValue(new RegistryValueImpl(Name, std::wstring(reinterpret_cast<wchar_t*>(buff)))); - else - regval = RegistryValue(new RegistryValueImpl(Name, std::wstring())); - } - else - { - assert(false); - } - - return regval; -} - -//----------------------------------------------------- -/** Get the specified registry value, return the given - default value if value not found - - @precond IsOpen = true -*/ -RegistryValue RegistryKeyImplWinNT::GetValue(const std::wstring& Name, const RegistryValue& Default) const -{ - assert(IsOpen()); - - DWORD Type; - wchar_t buff[MAX_TMP_BUFF_SIZE]; - DWORD size = sizeof(buff); - - LONG rc = RegQueryValueExW( - m_hSubKey, - Name.c_str(), - 0, - &Type, - reinterpret_cast<LPBYTE>(buff), - &size); - - if (ERROR_FILE_NOT_FOUND == rc) - { - #if (_MSC_VER < 1300) && !defined(__MINGW32__) - return Default; - #else - RegistryValue regval_ptr; - regval_ptr = RegistryValue(new RegistryValueImpl(*Default)); - return regval_ptr; - #endif - } - - if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - RegistryValue regval; - - if (REG_DWORD == Type) - regval = RegistryValue(new RegistryValueImpl(Name, *reinterpret_cast<int*>(buff))); - else if (REG_SZ == Type || REG_EXPAND_SZ == Type || REG_MULTI_SZ == Type) - regval = RegistryValue(new RegistryValueImpl(Name, std::wstring(reinterpret_cast<wchar_t*>(buff)))); - else - assert(false); - - return regval; -} - - -//############################################ -// Commands -//############################################ - - -//----------------------------------------------------- -/** Open the registry key, has no effect if - the key is already open - - @precond IsOpen = false - - @throws RegistryKeyNotFoundException - RegistryWriteAccessDenyException - RegistryAccessDenyException -*/ -void RegistryKeyImplWinNT::Open(bool Writeable) -{ - assert(!IsOpen()); - - REGSAM regsam = KEY_READ; - - if (Writeable) - regsam |= KEY_WRITE; - - LONG rc = RegOpenKeyExW( - m_hRootKey, - m_KeyName.c_str(), - 0, - regsam, - &m_hSubKey); - - if (ERROR_FILE_NOT_FOUND == rc) - throw RegistryKeyNotFoundException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - m_IsWriteable = Writeable; - - assert(IsOpen()); -} - -//----------------------------------------------------- -/** Open the specified sub-key of the registry key - at hand - - @precond IsOpen = true - HasSubKey(Name) = true - - @throws RegistryIOException - RegistryKeyNotFoundException - RegistryAccessDeniedException -*/ -RegistryKey RegistryKeyImplWinNT::OpenSubKey(const std::wstring& Name, bool Writeable) -{ - RegistryKey regkey(new RegistryKeyImplWinNT(m_hSubKey, Name)); - regkey->Open(Writeable); - return regkey; -} - -//----------------------------------------------------- -/** Creates a new sub-key below the key at hand - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException -*/ - -RegistryKey RegistryKeyImplWinNT::CreateSubKey(const std::wstring& Name) -{ - assert(IsOpen()); - assert(IsWriteable()); - - HKEY hRoot = IsRootKey() ? m_hRootKey : m_hSubKey; - - HKEY hKey; - - LONG rc = RegCreateKeyExW( - hRoot, - Name.c_str(), - 0, - 0, - REG_OPTION_NON_VOLATILE, - KEY_READ | KEY_WRITE, - 0, - &hKey, - 0); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - return RegistryKey(new RegistryKeyImplWinNT(hRoot, hKey, Name)); -} - -//----------------------------------------------------- -/** Deletes a sub-key below the key at hand, the - key must not have sub-keys - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException -*/ -void RegistryKeyImplWinNT::DeleteSubKey(const std::wstring& Name) -{ - assert(IsOpen()); - assert(IsWriteable()); - assert(HasSubKey(Name)); - - RegistryKey SubKey = OpenSubKey(Name); - - size_t nSubKeyCount = SubKey->GetSubKeyCount(); - - assert(0 == nSubKeyCount); - - if (nSubKeyCount) - throw RegistryInvalidOperationException(ERROR_NOT_SUPPORTED); - - LONG rc = RegDeleteKeyW(m_hSubKey, Name.c_str()); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); -} - -//----------------------------------------------------- -/** Deletes a sub-key below the key at hand with all - its sub-keys - - @precond IsOpen = true - IsWriteable = true; - - @throws RegistryIOException - RegistryWriteAccessDenyException -*/ -void RegistryKeyImplWinNT::DeleteSubKeyTree(const std::wstring& Name) -{ - ImplDeleteSubKeyTree(m_hSubKey, Name); -} - -//----------------------------------------------------- -/** Deletes a sub-key below the key at hand with all - its sub-keys - - @precond IsOpen = true - IsWriteable = true; - - @throws RegistryIOException - RegistryWriteAccessDenyException -*/ -LONG RegistryKeyImplWinNT::ImplDeleteSubKeyTree(HKEY RootKey, const std::wstring& Name) -{ - assert(IsOpen()); - - HKEY hKey; - - LONG rc = RegOpenKeyExW( - RootKey, - Name.c_str(), - 0, - KEY_READ | DELETE, - &hKey); - - if (ERROR_SUCCESS == rc) - { - wchar_t* lpSubKey; - DWORD nMaxSubKeyLen; - - rc = RegQueryInfoKeyW( - hKey, 0, 0, 0, 0, - &nMaxSubKeyLen, - 0, 0, 0, 0, 0, 0); - - nMaxSubKeyLen++; // space for trailing '\0' - - lpSubKey = reinterpret_cast<wchar_t*>( - _alloca(nMaxSubKeyLen*sizeof(wchar_t))); - - while (ERROR_SUCCESS == rc) - { - DWORD nLen = nMaxSubKeyLen; - - rc = RegEnumKeyExW( - hKey, - 0, // always index zero - lpSubKey, - &nLen, - 0, 0, 0, 0); - - if (ERROR_NO_MORE_ITEMS == rc) - { - rc = RegDeleteKeyW(RootKey, Name.c_str()); - break; - } - else if (rc == ERROR_SUCCESS) - { - rc = ImplDeleteSubKeyTree(hKey, lpSubKey); - } - - } // while - - RegCloseKey(hKey); - - } // if - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_FILE_NOT_FOUND == rc) - throw RegistryKeyNotFoundException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); - - return rc; -} - -//----------------------------------------------------- -/** Delete the specified value - - @precond IsOpen = true - IsWriteable = true - HasValue(Name) = true - - @throws RegistryIOException - RegistryWriteAccessDeniedException - RegistryValueNotFoundException -*/ -void RegistryKeyImplWinNT::DeleteValue(const std::wstring& Name) -{ - assert(IsOpen()); - assert(HasValue(Name)); - assert(IsWriteable()); - - LONG rc = RegDeleteValueW( - m_hSubKey, - Name.c_str()); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryNoWriteAccessException(rc); - else if (ERROR_FILE_NOT_FOUND == rc) - throw RegistryValueNotFoundException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); -} - -//----------------------------------------------------- -/** Set the specified registry value - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException -*/ -void RegistryKeyImplWinNT::SetValue(const RegistryValue& Value) -{ - assert(IsOpen()); - assert(IsWriteable()); - - LONG rc = RegSetValueExW( - m_hSubKey, - Value->GetName().c_str(), - 0, - Value->GetType(), - reinterpret_cast<const unsigned char*>(Value->GetDataBuffer()), - static_cast<DWORD>(Value->GetDataSize())); - - if (ERROR_INVALID_HANDLE == rc) - throw RegistryIOException(rc); - else if (ERROR_ACCESS_DENIED == rc) - throw RegistryAccessDeniedException(rc); - else if (ERROR_SUCCESS != rc) - throw RegistryException(rc); -} - - - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/registrywnt.hxx b/setup_native/source/win32/customactions/reg4msdoc/registrywnt.hxx deleted file mode 100644 index ac93df4f0..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/registrywnt.hxx +++ /dev/null @@ -1,205 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#ifndef _REGISTRYWNT_HXX_ -#define _REGISTRYWNT_HXX_ - -#include "registry.hxx" - -//--------------------------------------- -// constants -//--------------------------------------- - -class RegistryKeyImplWinNT : public RegistryKeyImpl -{ -public: - - //############################################ - // Queries - //############################################ - - /** The number of sub values of the key at hand - - @precond IsOpen = true - - @throws - */ - virtual size_t GetSubValueCount() const; - - /** The number of sub-keys of the key at hand - - @precond IsOpen = true - - @throws - */ - virtual size_t GetSubKeyCount() const; - - virtual StringListPtr GetSubKeyNames() const; - - virtual StringListPtr GetSubValueNames() const; - - /** Get the specified registry value - - @precond IsOpen = true - */ - virtual RegistryValue GetValue(const std::wstring& Name) const; - - /** Get the specified registry value, return the given - default value if value not found - - @precond IsOpen = true - */ - virtual RegistryValue GetValue(const std::wstring& Name, const RegistryValue& Default) const; - - //############################################ - // Commands - //############################################ - - /** Open the registry key, has no effect if - the key is already open - - @precond IsOpen = false - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - */ - virtual void Open(bool Writeable = true); - - /** Open the specified sub-key of the registry key - at hand - - @precond IsOpen = true - HasSubKey(Name) = true - - @throws RegistryIOException - RegistryKeyNotFoundException - RegistryAccessDeniedException - */ - virtual RegistryKey OpenSubKey(const std::wstring& Name, bool Writeable = true); - - /** Creates a new sub-key below the key at hand - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual RegistryKey CreateSubKey(const std::wstring& Name); - - /** Deletes a sub-key below the key at hand, the - key must not have sub-keys - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual void DeleteSubKey(const std::wstring& Name); - - /** Deletes a sub-key below the key at hand with all - its sub-keys - - @precond IsOpen = true - IsWriteable = true; - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual void DeleteSubKeyTree(const std::wstring& Name); - - /** Delete the specified value - - @precond IsOpen = true - IsWriteable = true - HasValue(Name) = true - - @throws RegistryIOException - RegistryWriteAccessDeniedException - RegistryValueNotFoundException - */ - virtual void DeleteValue(const std::wstring& Name); - - /** Set the specified registry value - - @precond IsOpen = true - IsWriteable = true - - @throws RegistryIOException - RegistryWriteAccessDenyException - */ - virtual void SetValue(const RegistryValue& Value); - - //############################################ - // Creation - // - // only possible through WindowsRegistry class - //############################################ - -protected: - /** Create instance and open the specified Registry key - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - RegistryKeyNotFoundException - */ - RegistryKeyImplWinNT(HKEY RootKey, const std::wstring& KeyName); - - /** Create instance and open the specified Registry key - - @throws RegistryWriteAccessDenyException - RegistryAccessDenyException - RegistryKeyNotFoundException - */ - RegistryKeyImplWinNT(HKEY RootKey); - - /** Create an instances of the specified Registry key, - the key is assumed to be already opened. - */ - RegistryKeyImplWinNT(HKEY RootKey, HKEY SubKey, const std::wstring& KeyName, bool Writeable = true); - -private: - - LONG ImplDeleteSubKeyTree(HKEY RootKey, const std::wstring& Name); - -//prevent copy and assignment -private: - RegistryKeyImplWinNT(const RegistryKeyImplWinNT&); - RegistryKeyImplWinNT& operator=(const RegistryKeyImplWinNT&); - -//###################################### -// Friend declarations -//###################################### - -friend class WindowsRegistry; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/stringconverter.cxx b/setup_native/source/win32/customactions/reg4msdoc/stringconverter.cxx deleted file mode 100644 index 84d45532d..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/stringconverter.cxx +++ /dev/null @@ -1,72 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#include "stringconverter.hxx" - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#include <windows.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#include <malloc.h> - -/** Convert a Unicode string to an ANSI string based on CP_ACP -*/ -std::string UnicodeToAnsiString(const std::wstring& UniString) -{ - int len = WideCharToMultiByte( - CP_ACP, 0, UniString.c_str(), -1, 0, 0, 0, 0); - - char* buff = reinterpret_cast<char*>(_alloca(len)); - - WideCharToMultiByte( - CP_ACP, 0, UniString.c_str(), -1, buff, len, 0, 0); - - return std::string(buff); -} - -/** Convert an ANSI string to unicode based on CP_ACP -*/ -std::wstring AnsiToUnicodeString(const std::string& AnsiString) -{ - int len = MultiByteToWideChar( - CP_ACP, 0, AnsiString.c_str(), -1, 0, 0); - - wchar_t* buff = reinterpret_cast<wchar_t*>(_alloca(len * sizeof(wchar_t))); - - MultiByteToWideChar( - CP_ACP, 0, AnsiString.c_str(), -1, buff, len); - - return std::wstring(buff); -} - - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/stringconverter.hxx b/setup_native/source/win32/customactions/reg4msdoc/stringconverter.hxx deleted file mode 100644 index 6a23c0e9b..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/stringconverter.hxx +++ /dev/null @@ -1,44 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/************************************************************************* - * - * 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. - * - ************************************************************************/ - -#ifndef _STRINGCONVERTER_HXX_ -#define _STRINGCONVERTER_HXX_ - -#include <string> - -/** Convert a Unicode string to an ANSI string based on CP_ACP -*/ -std::string UnicodeToAnsiString(const std::wstring& UniString); - -/** Convert an ANSI string to unicode based on CP_ACP -*/ -std::wstring AnsiToUnicodeString(const std::string& AnsiString); - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/userregistrar.cxx b/setup_native/source/win32/customactions/reg4msdoc/userregistrar.cxx deleted file mode 100644 index 03a19523d..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/userregistrar.cxx +++ /dev/null @@ -1,139 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// UserRegistrar.cpp: Implementierung der Klasse UserRegistrar. -// -////////////////////////////////////////////////////////////////////// - -#include "userregistrar.hxx" -#include "registryvalueimpl.hxx" -#include "windowsregistry.hxx" -#include "registryexception.hxx" - -#ifdef _MSC_VER -#pragma warning(disable : 4350) -#endif - -//-------------------------------------- -/** -*/ -UserRegistrar::UserRegistrar(const RegistrationContextInformation& RegContext) : - Registrar(RegContext) -{ - RegistryKey RegKey = WindowsRegistry().GetCurrentUserKey(); - m_RootKey = RegKey->OpenSubKey(L"Software\\Classes"); -} - -//################################### -// Command -//################################### - -//-------------------------------------- -/** -*/ -void UserRegistrar::UnregisterAsHtmlEditorForInternetExplorer() const -{ - Registrar::UnregisterAsHtmlEditorForInternetExplorer(); - - DeleteHtmFileAssociationKeys(); - - try - { - RegistryKey RegKey = m_RootKey->OpenSubKey(L"Applications"); - if ((0 == RegKey->GetSubValueCount()) && (0 == RegKey->GetSubKeyCount())) - { - RegKey->Close(); - m_RootKey->DeleteSubKey(L"Applications"); - } - } - catch(RegistryKeyNotFoundException&) - { - } -} - -//-------------------------------------- -/** -*/ -void UserRegistrar::RegisterAsDefaultShellHtmlEditor() const -{ - RegistryKey LocalHtmKey = m_RootKey->CreateSubKey(L".htm"); - - if (!LocalHtmKey->HasValue(DEFAULT_VALUE_NAME)) - { - RegistryKey HKCRKey = WindowsRegistry().GetClassesRootKey(); - - if (HKCRKey->HasSubKey(L".htm")) - { - RegistryKey RootHtmKey = HKCRKey->OpenSubKey(L".htm", false); - - if (RootHtmKey->HasValue(DEFAULT_VALUE_NAME)) - { - RegistryValue RegVal = RootHtmKey->GetValue(DEFAULT_VALUE_NAME); - - std::wstring RootHtmFwdKey = RegVal->GetDataAsUniString(); - - if (HKCRKey->HasSubKey(RootHtmFwdKey)) - { - m_RootKey->CreateSubKey(RootHtmFwdKey); - LocalHtmKey->CopyValue(RootHtmKey, DEFAULT_VALUE_NAME); - } - } - } - } - - // calling base class method - Registrar::RegisterAsDefaultShellHtmlEditor(); -} - -//-------------------------------------- -/** -*/ -void UserRegistrar::UnregisterAsDefaultShellHtmlEditor() const -{ - // calling base class method - Registrar::UnregisterAsDefaultShellHtmlEditor(); - DeleteHtmFileAssociationKeys(); -} - -//-------------------------------------- -/** -*/ -void UserRegistrar::UnregisterForMsOfficeApplication( - const std::wstring& FileExtension) const -{ - /// calling base class method - Registrar::UnregisterForMsOfficeApplication(FileExtension); - - if (m_RootKey->HasSubKey(FileExtension)) - { - RegistryKey RegKey = m_RootKey->OpenSubKey(FileExtension); - - if ((0 == RegKey->GetSubKeyCount()) && (0 == RegKey->GetSubValueCount())) - { - RegKey->Close(); - m_RootKey->DeleteSubKey(FileExtension); - } - } -} - -//-------------------------------------- -/** -*/ -RegistryKey UserRegistrar::GetRootKeyForDefHtmlEditorForIERegistration() const -{ - return WindowsRegistry().GetCurrentUserKey(); -} - -//-------------------------------------- -/** -*/ -void UserRegistrar::DeleteHtmFileAssociationKeys() const -{ - // Later delete the created keys if they are empty and have not changed meanwhile. - // Remeber: if we create a new registry key in the user part of the - // registry, changes to that key via the merged key HKEY_CLASSES_ROOT - // go into the user branch HKEY_CURRENT_USER and are not visible for other users. - // so we must carefully detect if the keys have not changed in order to prevent accidentally - // deleting a key and so destroying existing associations - // See MSDN: "Merged View of HKEY_CLASSES_ROOT" -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/userregistrar.hxx b/setup_native/source/win32/customactions/reg4msdoc/userregistrar.hxx deleted file mode 100644 index 653a4790e..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/userregistrar.hxx +++ /dev/null @@ -1,46 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// UserRegistrar.h: Schnittstelle für die Klasse UserRegistrar. -// -////////////////////////////////////////////////////////////////////// - -#ifndef _USERREGISTRAR_HXX_ -#define _USERREGISTRAR_HXX_ - -#include "registrar.hxx" - -class UserRegistrar : public Registrar -{ -public: - - //################################### - // Creation - //################################### - - UserRegistrar(const RegistrationContextInformation& RegContext); - - //################################### - // Command - //################################### - - virtual void UnregisterAsHtmlEditorForInternetExplorer() const; - - virtual void RegisterAsDefaultShellHtmlEditor() const; - virtual void UnregisterAsDefaultShellHtmlEditor() const; - -protected: - virtual void UnregisterForMsOfficeApplication( - const std::wstring& FileExtension) const; - - virtual RegistryKey GetRootKeyForDefHtmlEditorForIERegistration() const; - -private: - - /** Delete the privately created file associations - for htm files if the keys are empty - */ - void DeleteHtmFileAssociationKeys() const; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/windowsregistry.cxx b/setup_native/source/win32/customactions/reg4msdoc/windowsregistry.cxx deleted file mode 100644 index 49c32eb50..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/windowsregistry.cxx +++ /dev/null @@ -1,58 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// WindowsRegistry.cpp: Implementierung der Klasse WindowsRegistry. -// -////////////////////////////////////////////////////////////////////// - -#include "windowsregistry.hxx" -#include "registrywnt.hxx" -#include "registryw9x.hxx" - -#ifdef _MSC_VER -#pragma warning(disable : 4350) -#endif - -WindowsRegistry::WindowsRegistry() -{ - OSVERSIONINFOA osverinfo; - ZeroMemory(&osverinfo, sizeof(osverinfo)); - osverinfo.dwOSVersionInfoSize = sizeof(osverinfo); - GetVersionExA(&osverinfo); - - m_IsWinNT = (osverinfo.dwPlatformId == VER_PLATFORM_WIN32_NT); -} - -RegistryKey WindowsRegistry::GetClassesRootKey(bool Writeable) const -{ - return GetRegistryKey(HKEY_CLASSES_ROOT, Writeable); -} - -RegistryKey WindowsRegistry::GetCurrentUserKey(bool Writeable) const -{ - return GetRegistryKey(HKEY_CURRENT_USER, Writeable); -} - -RegistryKey WindowsRegistry::GetLocalMachineKey(bool Writeable) const -{ - return GetRegistryKey(HKEY_LOCAL_MACHINE, Writeable); -} - -RegistryKey WindowsRegistry::GetUserKey(bool Writeable) const -{ - return GetRegistryKey(HKEY_USERS, Writeable); -} - -RegistryKey WindowsRegistry::GetRegistryKey(HKEY RootKey, bool Writeable) const -{ - RegistryKey regkey; - - if (m_IsWinNT) - regkey = RegistryKey(new RegistryKeyImplWinNT(RootKey)); - else - regkey = RegistryKey(new RegistryKeyImplWin9x(RootKey)); - - regkey->Open(Writeable); - - return regkey; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/setup_native/source/win32/customactions/reg4msdoc/windowsregistry.hxx b/setup_native/source/win32/customactions/reg4msdoc/windowsregistry.hxx deleted file mode 100644 index 5b2f94047..000000000 --- a/setup_native/source/win32/customactions/reg4msdoc/windowsregistry.hxx +++ /dev/null @@ -1,43 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -// WindowsRegistry.h: Schnittstelle für die Klasse WindowsRegistry. -// -////////////////////////////////////////////////////////////////////// - -#ifndef _WINDOWSREGISTRY_HXX_ -#define _WINDOWSREGISTRY_HXX_ - -#ifdef _MSC_VER -#pragma warning(push, 1) /* disable warnings within system headers */ -#endif -#include <windows.h> -#ifdef _MSC_VER -#pragma warning(pop) -#endif - -#include "Registry.hxx" - -/** Basically a factory class -*/ -class WindowsRegistry -{ -public: - WindowsRegistry(); - - RegistryKey GetClassesRootKey(bool Writeable = true) const; - - RegistryKey GetCurrentUserKey(bool Writeable = true) const; - - RegistryKey GetLocalMachineKey(bool Writeable = true) const; - - RegistryKey GetUserKey(bool Writeable = true) const; - -private: - RegistryKey GetRegistryKey(HKEY RootKey, bool Writeable) const; - -private: - bool m_IsWinNT; -}; - -#endif - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |