Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1181)

Unified Diff: chrome/installer/setup/uninstall.cc

Issue 6588003: Add support for the quick-enable-cf command to the installer. This encompase... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/installer/setup/uninstall.cc
===================================================================
--- chrome/installer/setup/uninstall.cc (revision 76372)
+++ chrome/installer/setup/uninstall.cc (working copy)
@@ -101,6 +101,20 @@
}
}
+// Adds or removes the quick-enable-cf command to the binaries' version key in
+// the registry as needed.
+void ProcessQuickEnableWorkItems(
+ const installer::InstallerState& installer_state,
+ const installer::InstallationState& machine_state) {
+ scoped_ptr<WorkItemList> work_item_list(
+ WorkItem::CreateNoRollbackWorkItemList());
+
+ AddQuickEnableWorkItems(installer_state, machine_state, NULL, NULL,
+ work_item_list.get());
+ if (!work_item_list->Do())
+ LOG(ERROR) << "Failed to update quick-enable-cf command.";
+}
+
} // namespace
namespace installer {
@@ -357,31 +371,29 @@
DeleteResult DeleteFilesAndFolders(const InstallerState& installer_state,
const Version& installed_version) {
- VLOG(1) << "DeleteFilesAndFolders: " << installer_state.target_path().value();
- if (installer_state.target_path().empty()) {
- LOG(ERROR) << "Could not get installation destination path.";
+ const FilePath& target_path = installer_state.target_path();
+ if (target_path.empty()) {
+ LOG(ERROR) << "DeleteFilesAndFolders: no installation destination path.";
return DELETE_FAILED; // Nothing else we can do to uninstall, so we return.
}
DeleteResult result = DELETE_SUCCEEDED;
- VLOG(1) << "Deleting install path " << installer_state.target_path().value();
- if (!file_util::Delete(installer_state.target_path(), true)) {
- LOG(ERROR) << "Failed to delete folder (1st try): "
- << installer_state.target_path().value();
+ VLOG(1) << "Deleting install path " << target_path.value();
+ if (!file_util::Delete(target_path, true)) {
+ LOG(ERROR) << "Failed to delete folder (1st try): " << target_path.value();
if (installer_state.FindProduct(BrowserDistribution::CHROME_FRAME)) {
// We don't try killing Chrome processes for Chrome Frame builds since
// that is unlikely to help. Instead, schedule files for deletion and
// return a value that will trigger a reboot prompt.
- ScheduleDirectoryForDeletion(
- installer_state.target_path().value().c_str());
+ ScheduleDirectoryForDeletion(target_path.value().c_str());
result = DELETE_REQUIRES_REBOOT;
} else {
// Try closing any running chrome processes and deleting files once again.
CloseAllChromeProcesses();
- if (!file_util::Delete(installer_state.target_path(), true)) {
+ if (!file_util::Delete(target_path, true)) {
LOG(ERROR) << "Failed to delete folder (2nd try): "
- << installer_state.target_path().value();
+ << target_path.value();
result = DELETE_FAILED;
}
}
@@ -391,11 +403,11 @@
// If we need a reboot to continue, schedule the parent directories for
// deletion unconditionally. If they are not empty, the session manager
// will not delete them on reboot.
- ScheduleParentAndGrandparentForDeletion(installer_state.target_path());
+ ScheduleParentAndGrandparentForDeletion(target_path);
} else {
// Now check and delete if the parent directories are empty
// For example Google\Chrome or Chromium
- DeleteEmptyParentDir(installer_state.target_path());
+ DeleteEmptyParentDir(target_path);
}
return result;
}
@@ -465,9 +477,11 @@
return true;
}
- RegKey key(root, L"", KEY_ALL_ACCESS);
- if (!key.Valid()) {
- PLOG(ERROR) << "DeleteChromeRegistrationKeys: failed to open root key";
+ RegKey key;
+ LONG result = key.Open(root, L"", KEY_ALL_ACCESS);
+ if (result != ERROR_SUCCESS) {
+ LOG(ERROR) << "DeleteChromeRegistrationKeys: failed to open root key (lec: "
+ << result << ").";
}
// Delete Software\Classes\ChromeHTML,
@@ -667,6 +681,8 @@
suffix, ret);
}
+ ProcessQuickEnableWorkItems(installer_state, original_state);
+
// Get the state of the installed product (if any)
const ProductState* product_state =
original_state.GetProductState(installer_state.system_install(),

Powered by Google App Engine
This is Rietveld 408576698