chrome_launcher_support.h revision 23730a6e56a168d1879203e4b3819bb36e3d8f1f
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.
4
5#ifndef CHROME_INSTALLER_LAUNCHER_SUPPORT_CHROME_LAUNCHER_SUPPORT_H_
6#define CHROME_INSTALLER_LAUNCHER_SUPPORT_CHROME_LAUNCHER_SUPPORT_H_
7
8namespace base {
9class FilePath;
10}
11
12namespace chrome_launcher_support {
13
14enum InstallationLevel {
15  USER_LEVEL_INSTALLATION,
16  SYSTEM_LEVEL_INSTALLATION,
17};
18
19enum InstallationState {
20  NOT_INSTALLED,
21  INSTALLED_AT_USER_LEVEL,
22  INSTALLED_AT_SYSTEM_LEVEL,
23};
24
25// Returns the path to an existing setup.exe at the specified level, if it can
26// be found via Omaha client state.
27base::FilePath GetSetupExeForInstallationLevel(InstallationLevel level);
28
29// Returns the path to an installed chrome.exe at the specified level, if it can
30// be found via Omaha client state. Prefers the installer from a multi-install,
31// but may also return that of a single-install of Chrome if no multi-install
32// exists.
33base::FilePath GetChromePathForInstallationLevel(InstallationLevel level);
34
35// Returns the path to an installed app_host.exe at the specified level, if
36// it can be found via Omaha client state.
37base::FilePath GetAppHostPathForInstallationLevel(InstallationLevel level);
38
39// Returns the path to an installed SxS chrome.exe at the specified level, if
40// it can be found via Omaha client state.
41base::FilePath GetChromeSxSPathForInstallationLevel(InstallationLevel level);
42
43// Returns the path to an installed chrome.exe, or an empty path. Prefers a
44// system-level installation to a user-level installation. Uses Omaha client
45// state to identify a Chrome installation location.
46// The file path returned (if any) is guaranteed to exist.
47base::FilePath GetAnyChromePath();
48
49// Returns the path to an installed app_host.exe, or an empty path. Prefers a
50// system-level installation to a user-level installation. Uses Omaha client
51// state to identify a App Host installation location.
52// The file path returned (if any) is guaranteed to exist.
53base::FilePath GetAnyAppHostPath();
54
55// Returns the path to an installed SxS chrome.exe, or an empty path. Prefers a
56// user-level installation to a system-level installation. Uses Omaha client
57// state to identify a Chrome Canary installation location.
58// The file path returned (if any) is guaranteed to exist.
59base::FilePath GetAnyChromeSxSPath();
60
61// Uninstalls the legacy app launcher by launching setup.exe with the uninstall
62// arguments from the App Launcher ClientState registry key. The uninstall will
63// run asynchronously.
64void UninstallLegacyAppLauncher(InstallationLevel level);
65
66// Returns true if App Host is installed (system-level or user-level),
67// or in the same directory as the current executable.
68bool IsAppHostPresent();
69
70// Returns the app launcher installation state. If the launcher is installed
71// at both system level and user level, system level is returned.
72InstallationState GetAppLauncherInstallationState();
73
74// Returns true if App Launcher is installed (system-level or user-level).
75bool IsAppLauncherPresent();
76
77// Returns true if the Chrome browser is installed (system-level or user-level).
78// If this is running in an official build, it will check if a non-canary build
79// if installed. If it is not an official build, it will always return true.
80bool IsChromeBrowserPresent();
81
82}  // namespace chrome_launcher_support
83
84#endif  // CHROME_INSTALLER_LAUNCHER_SUPPORT_CHROME_LAUNCHER_SUPPORT_H_
85