summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/browser_main_win.cc6
-rw-r--r--chrome/installer/util/google_chrome_distribution.cc5
-rw-r--r--chrome/installer/util/install_util.cc17
-rw-r--r--chrome/installer/util/install_util.h9
4 files changed, 19 insertions, 18 deletions
diff --git a/chrome/browser/browser_main_win.cc b/chrome/browser/browser_main_win.cc
index 6616894..cf5e783 100644
--- a/chrome/browser/browser_main_win.cc
+++ b/chrome/browser/browser_main_win.cc
@@ -194,9 +194,9 @@ bool CheckMachineLevelInstall() {
const string16 caption = l10n_util::GetStringUTF16(IDS_PRODUCT_NAME);
const UINT flags = MB_OK | MB_ICONERROR | MB_TOPMOST;
ui::MessageBox(NULL, text, caption, flags);
- FilePath uninstall_path(InstallUtil::GetChromeUninstallCmd(false, dist));
- CommandLine uninstall_cmd(uninstall_path);
- if (!uninstall_cmd.GetProgram().value().empty()) {
+ CommandLine uninstall_cmd(
+ InstallUtil::GetChromeUninstallCmd(false, dist->GetType()));
+ if (!uninstall_cmd.GetProgram().empty()) {
uninstall_cmd.AppendSwitch(installer::switches::kForceUninstall);
uninstall_cmd.AppendSwitch(
installer::switches::kDoNotRemoveSharedItems);
diff --git a/chrome/installer/util/google_chrome_distribution.cc b/chrome/installer/util/google_chrome_distribution.cc
index aae4c9a..1ced0a9 100644
--- a/chrome/installer/util/google_chrome_distribution.cc
+++ b/chrome/installer/util/google_chrome_distribution.cc
@@ -686,9 +686,8 @@ void GoogleChromeDistribution::InactiveUserToastExperiment(int flavor,
bool system_level_toast = CommandLine::ForCurrentProcess()->HasSwitch(
installer::switches::kSystemLevelToast);
- std::wstring cmd(InstallUtil::GetChromeUninstallCmd(
- system_level_toast, this));
-
+ CommandLine cmd(InstallUtil::GetChromeUninstallCmd(system_level_toast,
+ GetType()));
base::LaunchApp(cmd, false, false, NULL);
}
#endif
diff --git a/chrome/installer/util/install_util.cc b/chrome/installer/util/install_util.cc
index 48af659..bc0a656 100644
--- a/chrome/installer/util/install_util.cc
+++ b/chrome/installer/util/install_util.cc
@@ -26,10 +26,12 @@
#include "chrome/installer/util/browser_distribution.h"
#include "chrome/installer/util/google_update_constants.h"
#include "chrome/installer/util/l10n_string_util.h"
+#include "chrome/installer/util/installation_state.h"
#include "chrome/installer/util/util_constants.h"
#include "chrome/installer/util/work_item_list.h"
using base::win::RegKey;
+using installer::ProductState;
bool InstallUtil::ExecuteExeAsAdmin(const CommandLine& cmd, DWORD* exit_code) {
FilePath::StringType program(cmd.GetProgram().value());
@@ -68,14 +70,13 @@ bool InstallUtil::ExecuteExeAsAdmin(const CommandLine& cmd, DWORD* exit_code) {
return true;
}
-std::wstring InstallUtil::GetChromeUninstallCmd(bool system_install,
- BrowserDistribution* dist) {
- DCHECK(dist);
- HKEY root = system_install ? HKEY_LOCAL_MACHINE : HKEY_CURRENT_USER;
- RegKey key(root, dist->GetUninstallRegPath().c_str(), KEY_READ);
- std::wstring uninstall_cmd;
- key.ReadValue(installer::kUninstallStringField, &uninstall_cmd);
- return uninstall_cmd;
+CommandLine InstallUtil::GetChromeUninstallCmd(
+ bool system_install, BrowserDistribution::Type distribution_type) {
+ ProductState state;
+ if (state.Initialize(system_install, distribution_type)) {
+ return state.uninstall_command();
+ }
+ return CommandLine(CommandLine::NO_PROGRAM);
}
Version* InstallUtil::GetChromeVersion(BrowserDistribution* dist,
diff --git a/chrome/installer/util/install_util.h b/chrome/installer/util/install_util.h
index 1912c09..0ce5758 100644
--- a/chrome/installer/util/install_util.h
+++ b/chrome/installer/util/install_util.h
@@ -15,10 +15,10 @@
#include <string>
#include "base/basictypes.h"
+#include "base/command_line.h"
+#include "chrome/installer/util/browser_distribution.h"
#include "chrome/installer/util/util_constants.h"
-class BrowserDistribution;
-class CommandLine;
class Version;
class WorkItemList;
@@ -39,8 +39,9 @@ class InstallUtil {
// Reads the uninstall command for Chromium from registry and returns it.
// If system_install is true the command is read from HKLM, otherwise
// from HKCU.
- static std::wstring GetChromeUninstallCmd(bool system_install,
- BrowserDistribution* dist);
+ static CommandLine GetChromeUninstallCmd(
+ bool system_install,
+ BrowserDistribution::Type distribution_type);
// Find the version of Chrome installed on the system by checking the
// Google Update registry key. Returns the version or NULL if no version is