diff options
Diffstat (limited to 'chrome/installer/util/shell_util.cc')
-rw-r--r-- | chrome/installer/util/shell_util.cc | 27 |
1 files changed, 12 insertions, 15 deletions
diff --git a/chrome/installer/util/shell_util.cc b/chrome/installer/util/shell_util.cc index 947c8a0..b82bbf8 100644 --- a/chrome/installer/util/shell_util.cc +++ b/chrome/installer/util/shell_util.cc @@ -295,10 +295,10 @@ bool IsChromeRegistered(const std::wstring& chrome_exe, return registered; } -// This method registers Chrome on Vista by launching eleavated setup.exe. -// That will show user standard Vista elevation prompt. If user accepts it -// the new process will make the necessary changes and return SUCCESS that -// we capture and return. +// This method registers Chrome on Vista by launching an elevated setup.exe. +// That will show the user the standard Vista elevation prompt. If the user +// accepts it the new process will make the necessary changes and return SUCCESS +// that we capture and return. bool ElevateAndRegisterChrome(const std::wstring& chrome_exe, const std::wstring& suffix) { FilePath exe_path = @@ -314,26 +314,23 @@ bool ElevateAndRegisterChrome(const std::wstring& chrome_exe, CommandLine command_line = CommandLine::FromString(uninstall_string); exe_path = command_line.GetProgram(); } + if (file_util::PathExists(exe_path)) { - std::wstring params(L"--"); - params.append( - ASCIIToWide(installer_util::switches::kRegisterChromeBrowser)); - params.append(L"=\"" + chrome_exe + L"\""); + CommandLine cmd(exe_path); + cmd.AppendSwitchNative(installer_util::switches::kRegisterChromeBrowser, + chrome_exe); if (!suffix.empty()) { - params.append(L" --"); - params.append(ASCIIToWide( - installer_util::switches::kRegisterChromeBrowserSuffix)); - params.append(L"=\"" + suffix + L"\""); + cmd.AppendSwitchNative( + installer_util::switches::kRegisterChromeBrowserSuffix, suffix); } CommandLine& browser_command_line = *CommandLine::ForCurrentProcess(); if (browser_command_line.HasSwitch(switches::kChromeFrame)) { - params.append(L" --"); - params.append(installer_util::switches::kChromeFrame); + cmd.AppendSwitch(installer_util::switches::kChromeFrame); } DWORD ret_val = 0; - InstallUtil::ExecuteExeAsAdmin(exe_path.value(), params, &ret_val); + InstallUtil::ExecuteExeAsAdmin(cmd, &ret_val); if (ret_val == 0) return true; } |