diff options
4 files changed, 13 insertions, 37 deletions
diff --git a/instsetoo_native/inc_openoffice/windows/msi_templates/AdminExe.idt b/instsetoo_native/inc_openoffice/windows/msi_templates/AdminExe.idt index 18b3ca47bdf2..2dd9e91da025 100644 --- a/instsetoo_native/inc_openoffice/windows/msi_templates/AdminExe.idt +++ b/instsetoo_native/inc_openoffice/windows/msi_templates/AdminExe.idt @@ -11,4 +11,4 @@ InstallFinalize 400 InstallInitialize 250 InstallValidate 200 ScheduleReboot ISSCHEDULEREBOOT 375 -SetInstalllocation 390 +SetInstallLocation1 390 diff --git a/instsetoo_native/inc_openoffice/windows/msi_templates/CustomAc.idt b/instsetoo_native/inc_openoffice/windows/msi_templates/CustomAc.idt index 41c2de258377..5f34a1c2766e 100644 --- a/instsetoo_native/inc_openoffice/windows/msi_templates/CustomAc.idt +++ b/instsetoo_native/inc_openoffice/windows/msi_templates/CustomAc.idt @@ -6,7 +6,8 @@ setAllUsersProfile2K 51 ALLUSERSPROFILE [%ALLUSERSPROFILE] SetAllUsersProfileNT 51 ALLUSERSPROFILE [%SystemRoot]\Profiles\All Users setUserProfileNT 51 USERPROFILE [%USERPROFILE] SetARPInstallLocation 51 ARPINSTALLLOCATION [INSTALLLOCATION] -SetInstalllocation 51 RegisterExtensions [INSTALLLOCATION] +SetInstallLocation1 51 RegisterExtensions [INSTALLLOCATION] +SetInstallLocation2 51 RemoveExtensions [INSTALLLOCATION] NewProductFound 19 OOO_CUSTOMACTION_1 SameProductFound 19 OOO_CUSTOMACTION_2 SetLanguageSelected 51 LANG_SELECTED 1 diff --git a/instsetoo_native/inc_openoffice/windows/msi_templates/InstallE.idt b/instsetoo_native/inc_openoffice/windows/msi_templates/InstallE.idt index bf9367bbf3a7..cfcd7ca5e9c0 100644 --- a/instsetoo_native/inc_openoffice/windows/msi_templates/InstallE.idt +++ b/instsetoo_native/inc_openoffice/windows/msi_templates/InstallE.idt @@ -56,7 +56,8 @@ ScheduleReboot ISSCHEDULEREBOOT 3125 SelfRegModules 2850 SelfUnregModules 1100 SetARPInstallLocation 990 -SetInstalllocation 3140 +SetInstallLocation1 3140 +SetInstallLocation2 3141 SetODBCFolders 550 StartServices VersionNT 2800 StopServices VersionNT 950 diff --git a/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx b/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx index bd5efb7f76c8..b1c1810e43e5 100644 --- a/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx +++ b/setup_native/source/win32/customactions/shellextensions/registerextensions.cxx @@ -210,42 +210,16 @@ extern "C" UINT __stdcall RegisterExtensions(MSIHANDLE handle) extern "C" UINT __stdcall RemoveExtensions(MSIHANDLE handle) { - // Finding the product with the help of the propery FINDPRODUCT, - // that contains a Windows Registry key, that points to the install location. - - TCHAR szValue[8192]; - DWORD nValueSize = sizeof(szValue); - HKEY hKey; - std::_tstring sInstDir; - - std::_tstring sProductKey = GetMsiProperty( handle, TEXT("FINDPRODUCT") ); - - if ( ERROR_SUCCESS == RegOpenKey( HKEY_CURRENT_USER, sProductKey.c_str(), &hKey ) ) - { - if ( ERROR_SUCCESS == RegQueryValueEx( hKey, TEXT("INSTALLLOCATION"), NULL, NULL, (LPBYTE)szValue, &nValueSize ) ) - { - sInstDir = szValue; - } - RegCloseKey( hKey ); - } - else if ( ERROR_SUCCESS == RegOpenKey( HKEY_LOCAL_MACHINE, sProductKey.c_str(), &hKey ) ) - { - if ( ERROR_SUCCESS == RegQueryValueEx( hKey, TEXT("INSTALLLOCATION"), NULL, NULL, (LPBYTE)szValue, &nValueSize ) ) - { - sInstDir = szValue; - } - RegCloseKey( hKey ); - } - else - { - return ERROR_SUCCESS; - } - - // Removing complete directory "Basis\prereg\bundled" + std::_tstring sInstDir = GetMsiProperty( handle, TEXT("CustomActionData") ); - std::_tstring sCacheDir = sInstDir + TEXT("share\\prereg\\bundled"); + // Removing complete directory "share\prereg\bundled" + RemoveCompleteDirectory( sInstDir + TEXT("share\\prereg\\bundled") ); - RemoveCompleteDirectory( sCacheDir ); + // At this point we need to take care about removing upper directories, + // because we are after InstallFinalize. We remove only empty directories. + RemoveDirectory( (sInstDir + TEXT("share\\prereg")).c_str() ); + RemoveDirectory( (sInstDir + TEXT("share")).c_str() ); + RemoveDirectory( sInstDir.c_str() ); return ERROR_SUCCESS; } |