| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // This file defines the methods useful for uninstalling Chrome. | 5 // This file defines the methods useful for uninstalling Chrome. |
| 6 | 6 |
| 7 #include "chrome/installer/setup/uninstall.h" | 7 #include "chrome/installer/setup/uninstall.h" |
| 8 | 8 |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 | 10 |
| (...skipping 136 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 147 bool success = update_list->Do(); | 147 bool success = update_list->Do(); |
| 148 LOG_IF(ERROR, !success) << "Failed updating channel values."; | 148 LOG_IF(ERROR, !success) << "Failed updating channel values."; |
| 149 } | 149 } |
| 150 } | 150 } |
| 151 | 151 |
| 152 void ProcessOnOsUpgradeWorkItems( | 152 void ProcessOnOsUpgradeWorkItems( |
| 153 const installer::InstallerState& installer_state, | 153 const installer::InstallerState& installer_state, |
| 154 const installer::Product& product) { | 154 const installer::Product& product) { |
| 155 scoped_ptr<WorkItemList> work_item_list( | 155 scoped_ptr<WorkItemList> work_item_list( |
| 156 WorkItem::CreateNoRollbackWorkItemList()); | 156 WorkItem::CreateNoRollbackWorkItemList()); |
| 157 AddOsUpgradeWorkItems(installer_state, base::FilePath(), base::Version(), | 157 AddOsUpgradeWorkItems(installer_state, base::FilePath(), Version(), product, |
| 158 product, work_item_list.get()); | 158 work_item_list.get()); |
| 159 if (!work_item_list->Do()) | 159 if (!work_item_list->Do()) |
| 160 LOG(ERROR) << "Failed to remove on-os-upgrade command."; | 160 LOG(ERROR) << "Failed to remove on-os-upgrade command."; |
| 161 } | 161 } |
| 162 | 162 |
| 163 void ProcessIELowRightsPolicyWorkItems( | 163 void ProcessIELowRightsPolicyWorkItems( |
| 164 const installer::InstallerState& installer_state) { | 164 const installer::InstallerState& installer_state) { |
| 165 scoped_ptr<WorkItemList> work_items(WorkItem::CreateNoRollbackWorkItemList()); | 165 scoped_ptr<WorkItemList> work_items(WorkItem::CreateNoRollbackWorkItemList()); |
| 166 AddDeleteOldIELowRightsPolicyWorkItems(installer_state, work_items.get()); | 166 AddDeleteOldIELowRightsPolicyWorkItems(installer_state, work_items.get()); |
| 167 work_items->Do(); | 167 work_items->Do(); |
| 168 installer::RefreshElevationPolicy(); | 168 installer::RefreshElevationPolicy(); |
| (...skipping 345 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 514 if (!vendor_directory.empty()) | 514 if (!vendor_directory.empty()) |
| 515 result = DeleteEmptyDir(vendor_directory); | 515 result = DeleteEmptyDir(vendor_directory); |
| 516 } | 516 } |
| 517 } | 517 } |
| 518 } | 518 } |
| 519 if (result == DELETE_NOT_EMPTY) | 519 if (result == DELETE_NOT_EMPTY) |
| 520 result = DELETE_SUCCEEDED; | 520 result = DELETE_SUCCEEDED; |
| 521 return result; | 521 return result; |
| 522 } | 522 } |
| 523 | 523 |
| 524 DeleteResult DeleteAppHostFilesAndFolders( | 524 DeleteResult DeleteAppHostFilesAndFolders(const InstallerState& installer_state, |
| 525 const InstallerState& installer_state, | 525 const Version& installed_version) { |
| 526 const base::Version& installed_version) { | |
| 527 const base::FilePath& target_path = installer_state.target_path(); | 526 const base::FilePath& target_path = installer_state.target_path(); |
| 528 if (target_path.empty()) { | 527 if (target_path.empty()) { |
| 529 LOG(ERROR) << "DeleteAppHostFilesAndFolders: no installation destination " | 528 LOG(ERROR) << "DeleteAppHostFilesAndFolders: no installation destination " |
| 530 << "path."; | 529 << "path."; |
| 531 return DELETE_FAILED; // Nothing else we can do to uninstall, so we return. | 530 return DELETE_FAILED; // Nothing else we can do to uninstall, so we return. |
| 532 } | 531 } |
| 533 | 532 |
| 534 DeleteInstallTempDir(target_path); | 533 DeleteInstallTempDir(target_path); |
| 535 | 534 |
| 536 DeleteResult result = DELETE_SUCCEEDED; | 535 DeleteResult result = DELETE_SUCCEEDED; |
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 910 } | 909 } |
| 911 } | 910 } |
| 912 | 911 |
| 913 // Builds and executes a work item list to remove DelegateExecute verb handler | 912 // Builds and executes a work item list to remove DelegateExecute verb handler |
| 914 // work items for |product|. This will be a noop for products whose | 913 // work items for |product|. This will be a noop for products whose |
| 915 // corresponding BrowserDistribution implementations do not publish a CLSID via | 914 // corresponding BrowserDistribution implementations do not publish a CLSID via |
| 916 // GetCommandExecuteImplClsid. | 915 // GetCommandExecuteImplClsid. |
| 917 bool ProcessDelegateExecuteWorkItems(const InstallerState& installer_state, | 916 bool ProcessDelegateExecuteWorkItems(const InstallerState& installer_state, |
| 918 const Product& product) { | 917 const Product& product) { |
| 919 scoped_ptr<WorkItemList> item_list(WorkItem::CreateNoRollbackWorkItemList()); | 918 scoped_ptr<WorkItemList> item_list(WorkItem::CreateNoRollbackWorkItemList()); |
| 920 AddDelegateExecuteWorkItems(installer_state, base::FilePath(), | 919 AddDelegateExecuteWorkItems(installer_state, base::FilePath(), Version(), |
| 921 base::Version(), product, item_list.get()); | 920 product, item_list.get()); |
| 922 return item_list->Do(); | 921 return item_list->Do(); |
| 923 } | 922 } |
| 924 | 923 |
| 925 // Removes Active Setup entries from the registry. This cannot be done through | 924 // Removes Active Setup entries from the registry. This cannot be done through |
| 926 // a work items list as usual because of different paths based on conditionals, | 925 // a work items list as usual because of different paths based on conditionals, |
| 927 // but otherwise respects the no rollback/best effort uninstall mentality. | 926 // but otherwise respects the no rollback/best effort uninstall mentality. |
| 928 // This will only apply for system-level installs of Chrome/Chromium and will be | 927 // This will only apply for system-level installs of Chrome/Chromium and will be |
| 929 // a no-op for all other types of installs. | 928 // a no-op for all other types of installs. |
| 930 void UninstallActiveSetupEntries(const InstallerState& installer_state, | 929 void UninstallActiveSetupEntries(const InstallerState& installer_state, |
| 931 const Product& product) { | 930 const Product& product) { |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1417 // If we need a reboot to continue, schedule the parent directories for | 1416 // If we need a reboot to continue, schedule the parent directories for |
| 1418 // deletion unconditionally. If they are not empty, the session manager | 1417 // deletion unconditionally. If they are not empty, the session manager |
| 1419 // will not delete them on reboot. | 1418 // will not delete them on reboot. |
| 1420 ScheduleParentAndGrandparentForDeletion(target_path); | 1419 ScheduleParentAndGrandparentForDeletion(target_path); |
| 1421 } else if (DeleteChromeDirectoriesIfEmpty(target_path) == DELETE_FAILED) { | 1420 } else if (DeleteChromeDirectoriesIfEmpty(target_path) == DELETE_FAILED) { |
| 1422 *uninstall_status = UNINSTALL_FAILED; | 1421 *uninstall_status = UNINSTALL_FAILED; |
| 1423 } | 1422 } |
| 1424 } | 1423 } |
| 1425 | 1424 |
| 1426 } // namespace installer | 1425 } // namespace installer |
| OLD | NEW |