Index: chrome/browser/first_run/first_run_win.cc |
=================================================================== |
--- chrome/browser/first_run/first_run_win.cc (revision 71802) |
+++ chrome/browser/first_run/first_run_win.cc (working copy) |
@@ -23,7 +23,6 @@ |
#include "base/string_split.h" |
#include "base/utf_string_conversions.h" |
#include "base/win/object_watcher.h" |
-#include "base/win/registry.h" |
#include "base/win/windows_version.h" |
#include "chrome/browser/extensions/extension_service.h" |
#include "chrome/browser/extensions/extension_updater.h" |
@@ -40,7 +39,9 @@ |
#include "chrome/installer/util/browser_distribution.h" |
#include "chrome/installer/util/google_update_constants.h" |
#include "chrome/installer/util/google_update_settings.h" |
+#include "chrome/installer/util/helper.h" |
#include "chrome/installer/util/install_util.h" |
+#include "chrome/installer/util/installation_state.h" |
#include "chrome/installer/util/shell_util.h" |
#include "chrome/installer/util/util_constants.h" |
#include "google_update_idl.h" |
@@ -68,13 +69,12 @@ |
return true; |
} |
-bool InvokeGoogleUpdateForRename() { |
+bool InvokeGoogleUpdateForRename(const std::wstring& app_guid) { |
ScopedComPtr<IProcessLauncher> ipl; |
if (!FAILED(ipl.CreateInstance(__uuidof(ProcessLauncherClass)))) { |
ULONG_PTR phandle = NULL; |
DWORD id = GetCurrentProcessId(); |
- BrowserDistribution* dist = BrowserDistribution::GetDistribution(); |
- if (!FAILED(ipl->LaunchCmdElevated(dist->GetAppGuid().c_str(), |
+ if (!FAILED(ipl->LaunchCmdElevated(app_guid.c_str(), |
google_update::kRegRenameCmdField, |
id, &phandle))) { |
HANDLE handle = HANDLE(phandle); |
@@ -267,21 +267,10 @@ |
return false; |
if (!file_util::PathExists(new_chrome_exe)) |
return false; |
- FilePath cur_chrome_exe; |
- if (!PathService::Get(base::FILE_EXE, &cur_chrome_exe)) |
- return false; |
+ std::wstring app_guid; |
+ std::wstring rename_cmd = installer::GetRenameCommand(&app_guid); |
tommi (sloooow) - chröme
2011/01/21 21:45:17
general style nit: We prefer std::string foo(Bar()
|
- // First try to rename exe by launching rename command ourselves. |
- bool user_install = |
- InstallUtil::IsPerUserInstall(cur_chrome_exe.value().c_str()); |
- HKEY reg_root = user_install ? HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE; |
- BrowserDistribution *dist = BrowserDistribution::GetDistribution(); |
- base::win::RegKey key; |
- std::wstring rename_cmd; |
- if ((key.Open(reg_root, dist->GetVersionKey().c_str(), |
- KEY_READ) == ERROR_SUCCESS) && |
- (key.ReadValue(google_update::kRegRenameCmdField, |
- &rename_cmd) == ERROR_SUCCESS)) { |
+ if (!rename_cmd.empty()) { |
base::ProcessHandle handle; |
if (base::LaunchApp(rename_cmd, true, true, &handle)) { |
DWORD exit_code; |
@@ -290,10 +279,12 @@ |
if (exit_code == installer::RENAME_SUCCESSFUL) |
return true; |
} |
+ } else { |
+ NOTREACHED() << "Empty command string found to rename new chrome."; |
} |
// Rename didn't work so try to rename by calling Google Update |
- return InvokeGoogleUpdateForRename(); |
+ return InvokeGoogleUpdateForRename(app_guid); |
} |
// static |