| Index: chrome/installer/launcher_support/chrome_launcher_support.cc
|
| diff --git a/chrome/installer/launcher_support/chrome_launcher_support.cc b/chrome/installer/launcher_support/chrome_launcher_support.cc
|
| index 8e5b6a5ddad6efe0782a7a228084a5c4895f09a9..9e9ba92604d6bde5c4d5be35b0b479d14ba85fc0 100644
|
| --- a/chrome/installer/launcher_support/chrome_launcher_support.cc
|
| +++ b/chrome/installer/launcher_support/chrome_launcher_support.cc
|
| @@ -5,20 +5,12 @@
|
| #include "chrome/installer/launcher_support/chrome_launcher_support.h"
|
|
|
| #include <windows.h>
|
| -#include <tchar.h>
|
|
|
| -#include "base/command_line.h"
|
| #include "base/file_util.h"
|
| #include "base/files/file_path.h"
|
| -#include "base/logging.h"
|
| -#include "base/process/launch.h"
|
| #include "base/strings/string16.h"
|
| #include "base/win/registry.h"
|
|
|
| -#ifndef OFFICIAL_BUILD
|
| -#include "base/path_service.h"
|
| -#endif
|
| -
|
| namespace chrome_launcher_support {
|
|
|
| namespace {
|
| @@ -26,8 +18,6 @@ namespace {
|
| // TODO(huangs) Refactor the constants: http://crbug.com/148538
|
| const wchar_t kGoogleRegClientStateKey[] =
|
| L"Software\\Google\\Update\\ClientState";
|
| -const wchar_t kGoogleRegClientsKey[] = L"Software\\Google\\Update\\Clients";
|
| -const wchar_t kRegVersionField[] = L"pv";
|
|
|
| // Copied from chrome_appid.cc.
|
| const wchar_t kBinariesAppGuid[] = L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}";
|
| @@ -35,14 +25,8 @@ const wchar_t kBinariesAppGuid[] = L"{4DC8B4CA-1BDA-483e-B5FA-D3C12E15B62D}";
|
| // Copied from google_chrome_distribution.cc.
|
| const wchar_t kBrowserAppGuid[] = L"{8A69D345-D564-463c-AFF1-A69D9E530F96}";
|
|
|
| -// Copied frome google_chrome_sxs_distribution.cc.
|
| -const wchar_t kSxSBrowserAppGuid[] = L"{4ea16ac7-fd5a-47c3-875b-dbf4a2008c20}";
|
| -
|
| // Copied from util_constants.cc.
|
| -const wchar_t kChromeAppHostExe[] = L"app_host.exe";
|
| -const char kChromeAppLauncher[] = "app-launcher";
|
| const wchar_t kChromeExe[] = L"chrome.exe";
|
| -const wchar_t kUninstallArgumentsField[] = L"UninstallArguments";
|
| const wchar_t kUninstallStringField[] = L"UninstallString";
|
|
|
| // Reads a string value from the specified product's "ClientState" registry key.
|
| @@ -66,33 +50,6 @@ bool GetClientStateValue(InstallationLevel level,
|
| return false;
|
| }
|
|
|
| -// Determines whether the specified product has a key in "Clients". This
|
| -// indicates whether the product is installed at the given level.
|
| -bool IsProductInstalled(InstallationLevel level, const wchar_t* app_guid) {
|
| - HKEY root_key = (level == USER_LEVEL_INSTALLATION) ?
|
| - HKEY_CURRENT_USER : HKEY_LOCAL_MACHINE;
|
| - base::string16 subkey(kGoogleRegClientsKey);
|
| - subkey.append(1, L'\\').append(app_guid);
|
| - base::win::RegKey reg_key;
|
| - // Google Update always uses 32bit hive.
|
| - return reg_key.Open(root_key, subkey.c_str(),
|
| - KEY_QUERY_VALUE | KEY_WOW64_32KEY) == ERROR_SUCCESS &&
|
| - reg_key.HasValue(kRegVersionField);
|
| -}
|
| -
|
| -bool IsAppLauncherEnabledAtLevel(InstallationLevel level) {
|
| - base::string16 uninstall_arguments;
|
| - if (GetClientStateValue(level,
|
| - kAppLauncherGuid,
|
| - kUninstallArgumentsField,
|
| - &uninstall_arguments)) {
|
| - return CommandLine::FromString(L"dummy.exe " + uninstall_arguments)
|
| - .HasSwitch(kChromeAppLauncher) &&
|
| - !GetAppHostPathForInstallationLevel(level).empty();
|
| - }
|
| - return false;
|
| -}
|
| -
|
| // Reads the path to setup.exe from the value "UninstallString" within the
|
| // specified product's "ClientState" registry key. Returns an empty FilePath if
|
| // an error occurs or the product is not installed at the specified level.
|
| @@ -107,9 +64,22 @@ base::FilePath GetSetupExeFromRegistry(InstallationLevel level,
|
| return base::FilePath();
|
| }
|
|
|
| -// Returns the path to an installed |exe_file| (e.g. chrome.exe, app_host.exe)
|
| -// at the specified level, given |setup_exe_path| from Omaha client state.
|
| -// Returns empty base::FilePath if none found, or if |setup_exe_path| is empty.
|
| +// Returns the path to an existing setup.exe at the specified level, if it can
|
| +// be found via Omaha client state.
|
| +base::FilePath GetSetupExeForInstallationLevel(InstallationLevel level) {
|
| + // Look in the registry for Chrome Binaries first.
|
| + base::FilePath setup_exe_path(
|
| + GetSetupExeFromRegistry(level, kBinariesAppGuid));
|
| + // If the above fails, look in the registry for Chrome next.
|
| + if (setup_exe_path.empty())
|
| + setup_exe_path = GetSetupExeFromRegistry(level, kBrowserAppGuid);
|
| + // If we fail again, then setup_exe_path would be empty.
|
| + return setup_exe_path;
|
| +}
|
| +
|
| +// Returns the path to an installed |exe_file| (e.g. chrome.exe) at the
|
| +// specified level, given |setup_exe_path| from Omaha client state. Returns
|
| +// empty base::FilePath if none found, or if |setup_exe_path| is empty.
|
| base::FilePath FindExeRelativeToSetupExe(const base::FilePath setup_exe_path,
|
| const wchar_t* exe_file) {
|
| if (!setup_exe_path.empty()) {
|
| @@ -131,52 +101,11 @@ base::FilePath FindExeRelativeToSetupExe(const base::FilePath setup_exe_path,
|
|
|
| } // namespace
|
|
|
| -const wchar_t kAppLauncherGuid[] = L"{FDA71E6F-AC4C-4a00-8B70-9958A68906BF}";
|
| -
|
| -void UninstallLegacyAppLauncher(InstallationLevel level) {
|
| - base::FilePath setup_exe(GetSetupExeFromRegistry(level, kAppLauncherGuid));
|
| - if (setup_exe.empty())
|
| - return;
|
| - base::string16 uninstall_arguments;
|
| - if (GetClientStateValue(level,
|
| - kAppLauncherGuid,
|
| - kUninstallArgumentsField,
|
| - &uninstall_arguments)) {
|
| - CommandLine uninstall_cmd = CommandLine::FromString(
|
| - L"\"" + setup_exe.value() + L"\" " + uninstall_arguments);
|
| -
|
| - VLOG(1) << "Uninstalling legacy app launcher with command line: "
|
| - << uninstall_cmd.GetCommandLineString();
|
| - base::LaunchProcess(uninstall_cmd, base::LaunchOptions(), NULL);
|
| - }
|
| -}
|
| -
|
| -base::FilePath GetSetupExeForInstallationLevel(InstallationLevel level) {
|
| - // Look in the registry for Chrome Binaries first.
|
| - base::FilePath setup_exe_path(
|
| - GetSetupExeFromRegistry(level, kBinariesAppGuid));
|
| - // If the above fails, look in the registry for Chrome next.
|
| - if (setup_exe_path.empty())
|
| - setup_exe_path = GetSetupExeFromRegistry(level, kBrowserAppGuid);
|
| - // If we fail again, then setup_exe_path would be empty.
|
| - return setup_exe_path;
|
| -}
|
| -
|
| base::FilePath GetChromePathForInstallationLevel(InstallationLevel level) {
|
| return FindExeRelativeToSetupExe(
|
| GetSetupExeForInstallationLevel(level), kChromeExe);
|
| }
|
|
|
| -base::FilePath GetAppHostPathForInstallationLevel(InstallationLevel level) {
|
| - return FindExeRelativeToSetupExe(
|
| - GetSetupExeFromRegistry(level, kAppLauncherGuid), kChromeAppHostExe);
|
| -}
|
| -
|
| -base::FilePath GetChromeSxSPathForInstallationLevel(InstallationLevel level) {
|
| - return FindExeRelativeToSetupExe(
|
| - GetSetupExeFromRegistry(level, kSxSBrowserAppGuid), kChromeExe);
|
| -}
|
| -
|
| base::FilePath GetAnyChromePath() {
|
| base::FilePath chrome_path;
|
| if (chrome_path.empty())
|
| @@ -186,47 +115,4 @@ base::FilePath GetAnyChromePath() {
|
| return chrome_path;
|
| }
|
|
|
| -base::FilePath GetAnyAppHostPath() {
|
| - base::FilePath app_host_path;
|
| - if (app_host_path.empty()) {
|
| - app_host_path = GetAppHostPathForInstallationLevel(
|
| - SYSTEM_LEVEL_INSTALLATION);
|
| - }
|
| - if (app_host_path.empty())
|
| - app_host_path = GetAppHostPathForInstallationLevel(USER_LEVEL_INSTALLATION);
|
| - return app_host_path;
|
| -}
|
| -
|
| -base::FilePath GetAnyChromeSxSPath() {
|
| - base::FilePath path =
|
| - GetChromeSxSPathForInstallationLevel(USER_LEVEL_INSTALLATION);
|
| - if (path.empty())
|
| - path = GetChromeSxSPathForInstallationLevel(SYSTEM_LEVEL_INSTALLATION);
|
| - return path;
|
| -}
|
| -
|
| -bool IsAppHostPresent() {
|
| - base::FilePath app_host_exe = GetAnyAppHostPath();
|
| - return !app_host_exe.empty();
|
| -}
|
| -
|
| -InstallationState GetAppLauncherInstallationState() {
|
| - if (IsAppLauncherEnabledAtLevel(SYSTEM_LEVEL_INSTALLATION))
|
| - return INSTALLED_AT_SYSTEM_LEVEL;
|
| -
|
| - if (IsAppLauncherEnabledAtLevel(USER_LEVEL_INSTALLATION))
|
| - return INSTALLED_AT_USER_LEVEL;
|
| -
|
| - return NOT_INSTALLED;
|
| -}
|
| -
|
| -bool IsAppLauncherPresent() {
|
| - return GetAppLauncherInstallationState() != NOT_INSTALLED;
|
| -}
|
| -
|
| -bool IsChromeBrowserPresent() {
|
| - return IsProductInstalled(USER_LEVEL_INSTALLATION, kBrowserAppGuid) ||
|
| - IsProductInstalled(SYSTEM_LEVEL_INSTALLATION, kBrowserAppGuid);
|
| -}
|
| -
|
| } // namespace chrome_launcher_support
|
|
|