Index: chrome/installer/setup/uninstall.cc |
diff --git a/chrome/installer/setup/uninstall.cc b/chrome/installer/setup/uninstall.cc |
index 51799bbd557bc4bdad4423120042d598fa5492af..512e616f1589426b9d6781ffdbc3b55f63303cab 100644 |
--- a/chrome/installer/setup/uninstall.cc |
+++ b/chrome/installer/setup/uninstall.cc |
@@ -828,7 +828,7 @@ void UninstallActiveSetupEntries(const InstallerState& installer_state, |
} |
// Removes the persistent blacklist state for the current user. Note: this will |
-// not remove the state for users other than the one uninstalling chrome on a |
+// not remove the state for users other than the one uninstalling Chrome on a |
// system-level install (http://crbug.com/388725). Doing so would require |
// extracting the per-user registry hive iteration from |
// UninstallActiveSetupEntries so that it could service multiple tasks. |
@@ -841,6 +841,15 @@ void RemoveBlacklistState() { |
0); // wow64_access |
} |
+// Removes the persistent state for |distribution| for the current user. Note: |
+// this will not remove the state for users other than the one uninstalling |
+// Chrome on a system-level install; see RemoveBlacklistState for details. |
+void RemoveDistributionRegistryState(BrowserDistribution* distribution) { |
+ base::string16 key_name(L"Software\\"); |
+ key_name += distribution->GetInstallSubDir(); |
+ InstallUtil::DeleteRegistryKey(HKEY_CURRENT_USER, key_name, KEY_WOW64_32KEY); |
+} |
+ |
} // namespace |
DeleteResult DeleteChromeDirectoriesIfEmpty( |
@@ -1330,8 +1339,10 @@ InstallStatus UninstallProduct(const InstallationState& original_state, |
} |
} |
- if (delete_profile) |
+ if (delete_profile) { |
DeleteUserDataDir(user_data_dir, product.is_chrome_frame()); |
+ RemoveDistributionRegistryState(browser_dist); |
+ } |
if (!force_uninstall) { |
VLOG(1) << "Uninstallation complete. Launching post-uninstall operations."; |