summaryrefslogtreecommitdiff
path: root/setup_native/source/win32/customactions/reg4msdoc/register.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'setup_native/source/win32/customactions/reg4msdoc/register.cxx')
-rw-r--r--setup_native/source/win32/customactions/reg4msdoc/register.cxx342
1 files changed, 0 insertions, 342 deletions
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 a23d0ea67934..000000000000
--- 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: */