| Index: chrome/installer/setup/uninstall.cc
|
| diff --git a/chrome/installer/setup/uninstall.cc b/chrome/installer/setup/uninstall.cc
|
| index a67e01bb1521bd4f0962006d2f4f418d4567789c..7152f045e4bc0dd8d55717b7f18962eaceafc4f5 100644
|
| --- a/chrome/installer/setup/uninstall.cc
|
| +++ b/chrome/installer/setup/uninstall.cc
|
| @@ -243,6 +243,7 @@ installer_util::InstallStatus IsChromeActiveOrUserCancelled(
|
|
|
|
|
| bool installer_setup::DeleteChromeRegistrationKeys(HKEY root,
|
| + const std::wstring& browser_entry_suffix,
|
| installer_util::InstallStatus& exit_code) {
|
| RegKey key(root, L"", KEY_ALL_ACCESS);
|
|
|
| @@ -262,11 +263,12 @@ bool installer_setup::DeleteChromeRegistrationKeys(HKEY root,
|
| ext_association.append(chrome::kExtensionFileExtension);
|
| DeleteRegistryKey(key, ext_association);
|
|
|
| - // Delete Software\Clients\StartMenuInternet\chrome.exe
|
| + // Delete Software\Clients\StartMenuInternet\Chromium
|
| BrowserDistribution* dist = BrowserDistribution::GetDistribution();
|
| std::wstring set_access_key(ShellUtil::kRegStartMenuInternet);
|
| file_util::AppendToPath(&set_access_key, dist->GetApplicationName());
|
| DeleteRegistryKey(key, set_access_key);
|
| +
|
| // We have renamed the StartMenuInternet\chrome.exe to
|
| // StartMenuInternet\Chromium so for old users we still need to delete
|
| // the old key.
|
| @@ -274,10 +276,25 @@ bool installer_setup::DeleteChromeRegistrationKeys(HKEY root,
|
| file_util::AppendToPath(&old_set_access_key, installer_util::kChromeExe);
|
| DeleteRegistryKey(key, old_set_access_key);
|
|
|
| - // Delete Software\RegisteredApplications\Chrome
|
| + // Delete Software\RegisteredApplications\Chromium
|
| DeleteRegistryValue(root, ShellUtil::kRegRegisteredApplications,
|
| dist->GetApplicationName());
|
|
|
| + // Delete Software\Classes\ChromeHTML.<user>
|
| + // Delete Software\Classes\ChromeExt.<user>
|
| + // Delete Software\Clients\StartMenuInternet\Chromium.<user>
|
| + // Delete Software\RegisteredApplications\Chromium.<user>
|
| + if (!browser_entry_suffix.empty()) {
|
| + html_prog_id.append(browser_entry_suffix);
|
| + DeleteRegistryKey(key, html_prog_id);
|
| + ext_prog_id.append(browser_entry_suffix);
|
| + DeleteRegistryKey(key, ext_prog_id);
|
| + set_access_key.append(browser_entry_suffix);
|
| + DeleteRegistryKey(key, set_access_key);
|
| + DeleteRegistryValue(root, ShellUtil::kRegRegisteredApplications,
|
| + dist->GetApplicationName() + browser_entry_suffix);
|
| + }
|
| +
|
| // Delete Software\Classes\Applications\chrome.exe
|
| std::wstring app_key(ShellUtil::kRegClasses);
|
| file_util::AppendToPath(&app_key, L"Applications");
|
| @@ -307,6 +324,8 @@ installer_util::InstallStatus installer_setup::UninstallChrome(
|
| const std::wstring& exe_path, bool system_uninstall,
|
| bool remove_all, bool force_uninstall,
|
| const CommandLine& cmd_line, const wchar_t* cmd_params) {
|
| + std::wstring suffix;
|
| + ShellUtil::GetUserSpecificDefaultBrowserSuffix(&suffix);
|
| installer_util::InstallStatus status = installer_util::UNINSTALL_CONFIRMED;
|
| if (force_uninstall) {
|
| // Since --force-uninstall command line option is used, we are going to
|
| @@ -335,6 +354,11 @@ installer_util::InstallStatus installer_setup::UninstallChrome(
|
| // Append --remove-chrome-registration to remove registry keys only.
|
| params.append(L" --");
|
| params.append(installer_util::switches::kRemoveChromeRegistration);
|
| + if (!suffix.empty()) {
|
| + params.append(L" --");
|
| + params.append(installer_util::switches::kRegisterChromeBrowserSuffix);
|
| + params.append(L"=\"" + suffix + L"\"");
|
| + }
|
| DWORD exit_code = installer_util::UNKNOWN_STATUS;
|
| InstallUtil::ExecuteExeAsAdmin(exe, params, &exit_code);
|
| }
|
| @@ -366,12 +390,12 @@ installer_util::InstallStatus installer_setup::UninstallChrome(
|
|
|
| // Remove all Chrome registration keys.
|
| installer_util::InstallStatus ret = installer_util::UNKNOWN_STATUS;
|
| - DeleteChromeRegistrationKeys(reg_root, ret);
|
| + DeleteChromeRegistrationKeys(reg_root, suffix, ret);
|
|
|
| // For user level install also we end up creating some keys in HKLM if user
|
| // sets Chrome as default browser. So delete those as well (needs admin).
|
| if (remove_all && !system_uninstall)
|
| - DeleteChromeRegistrationKeys(HKEY_LOCAL_MACHINE, ret);
|
| + DeleteChromeRegistrationKeys(HKEY_LOCAL_MACHINE, suffix, ret);
|
|
|
| // Delete shared registry keys as well (these require admin rights) if
|
| // remove_all option is specified.
|
|
|