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
3 // found in the LICENSE file.
5 // This file declares Chrome uninstall related functions.
7 #ifndef CHROME_INSTALLER_SETUP_UNINSTALL_H_
8 #define CHROME_INSTALLER_SETUP_UNINSTALL_H_
12 #include "base/strings/string16.h"
13 #include "chrome/installer/util/util_constants.h"
15 class BrowserDistribution
;
24 class InstallationState
;
32 DELETE_REQUIRES_REBOOT
,
35 // Deletes |target_directory| (".../Application") and the vendor directories
36 // (e.g., ".../Google/Chrome") if they are empty. Returns DELETE_SUCCEEDED if
37 // either the directories were deleted or if they were not empty. Returns
38 // DELETE_FAILED if any could not be deleted due to an error.
39 DeleteResult
DeleteChromeDirectoriesIfEmpty(
40 const base::FilePath
& application_directory
);
42 // This function removes all Chrome registration related keys. It returns true
43 // if successful, otherwise false. The error code is set in |exit_code|.
44 // |root| is the registry root (HKLM|HKCU) and |browser_entry_suffix| is the
45 // suffix for default browser entry name in the registry (optional).
46 bool DeleteChromeRegistrationKeys(const InstallerState
& installer_state
,
47 BrowserDistribution
* dist
,
49 const base::string16
& browser_entry_suffix
,
50 InstallStatus
* exit_code
);
52 // Removes any legacy registry keys from earlier versions of Chrome that are no
53 // longer needed. This is used during autoupdate since we don't do full
54 // uninstalls/reinstalls to update.
55 void RemoveChromeLegacyRegistryKeys(BrowserDistribution
* dist
,
56 const base::FilePath
& chrome_exe
);
58 // This function uninstalls a product. Hence we came up with this awesome
61 // original_state: The installation state of all products on the system.
62 // installer_state: State associated with this operation.
63 // setup_exe: The path to the currently running setup.exe. It and its containing
64 // directories are left in-place if it is within the target directory of
65 // the product being uninstalled.
66 // dist: Represents the distribution to be uninstalled.
67 // remove_all: Remove all shared files, registry entries as well.
68 // force_uninstall: Uninstall without prompting for user confirmation or
69 // any checks for Chrome running.
70 // cmd_line: CommandLine that contains information about the command that
71 // was used to launch current uninstaller.
72 installer::InstallStatus
UninstallProduct(
73 const InstallationState
& original_state
,
74 const InstallerState
& installer_state
,
75 const base::FilePath
& setup_exe
,
79 const base::CommandLine
& cmd_line
);
81 // Cleans up the installation directory after all uninstall operations have
82 // completed. Depending on what products are remaining, setup.exe and the
83 // installer archive may be deleted. Empty directories will be pruned (or
84 // scheduled for pruning after reboot, if necessary).
86 // original_state: The installation state of all products on the system.
87 // installer_state: State associated with this operation.
88 // setup_exe: The path to the currently running setup.exe, which will be moved
89 // into a temporary directory to allow for deletion of the installation
91 // uninstall_status: the uninstall status so far (may change during invocation).
92 void CleanUpInstallationDirectoryAfterUninstall(
93 const InstallationState
& original_state
,
94 const InstallerState
& installer_state
,
95 const base::FilePath
& setup_exe
,
96 InstallStatus
* uninstall_status
);
98 } // namespace installer
100 #endif // CHROME_INSTALLER_SETUP_UNINSTALL_H_