util_constants.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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// Defines all install related constants that need to be used by Chrome as
6// well as Chrome Installer.
7
8#ifndef CHROME_INSTALLER_UTIL_UTIL_CONSTANTS_H_
9#define CHROME_INSTALLER_UTIL_UTIL_CONSTANTS_H_
10
11#include "base/basictypes.h"
12
13namespace installer {
14
15// Return status of installer
16enum InstallStatus {
17  FIRST_INSTALL_SUCCESS,  // 0. Successfully installed Chrome for the first time
18  INSTALL_REPAIRED,       // 1. Same version reinstalled for repair
19  NEW_VERSION_UPDATED,    // 2. Chrome successfully updated to new version
20  EXISTING_VERSION_LAUNCHED,  // 3. No work done, just launched existing chrome
21  HIGHER_VERSION_EXISTS,  // 4. Higher version of Chrome already exists
22  USER_LEVEL_INSTALL_EXISTS,  // 5. User level install already exists
23  SYSTEM_LEVEL_INSTALL_EXISTS,  // 6. Machine level install already exists
24  INSTALL_FAILED,         // 7. Install/update failed
25  SETUP_PATCH_FAILED,     // 8. Failed to patch setup.exe
26  OS_NOT_SUPPORTED,       // 9. Current OS not supported
27  OS_ERROR,               // 10. OS API call failed
28  TEMP_DIR_FAILED,        // 11. Unable to get Temp directory
29  UNCOMPRESSION_FAILED,   // 12. Failed to uncompress Chrome archive
30  INVALID_ARCHIVE,        // 13. Something wrong with the installer archive
31  INSUFFICIENT_RIGHTS,    // 14. User trying system level install is not Admin
32  CHROME_NOT_INSTALLED,   // 15. Chrome not installed (returned in case of
33                          // uninstall)
34  CHROME_RUNNING,         // 16. Chrome currently running (when trying to
35                          // uninstall)
36  UNINSTALL_CONFIRMED,    // 17. User has confirmed Chrome uninstall
37  UNINSTALL_DELETE_PROFILE,  // 18. User okayed uninstall and profile deletion.
38  UNINSTALL_SUCCESSFUL,   // 19. Chrome successfully uninstalled
39  UNINSTALL_FAILED,       // 20. Chrome uninstallation failed
40  UNINSTALL_CANCELLED,    // 21. User cancelled Chrome uninstallation
41  UNKNOWN_STATUS,         // 22. Unknown status (this should never happen)
42  RENAME_SUCCESSFUL,      // 23. Rename of new_chrome.exe to chrome.exe worked
43  RENAME_FAILED,          // 24. Rename of new_chrome.exe failed
44  EULA_REJECTED,          // 25. EULA dialog was not accepted by user.
45  EULA_ACCEPTED,          // 26. EULA dialog was accepted by user.
46  EULA_ACCEPTED_OPT_IN,   // 27. EULA accepted with the crash option selected.
47  INSTALL_DIR_IN_USE,     // 28. Installation directory is in use by another
48                          // process
49  UNINSTALL_REQUIRES_REBOOT,  // 29. Uninstallation required a reboot.
50  IN_USE_UPDATED,         // 30. Chrome successfully updated but old version
51                          // running
52  SAME_VERSION_REPAIR_FAILED,  // 31. Chrome repair failed as Chrome was running
53  REENTRY_SYS_UPDATE,     // 32. Setup has been re-launched as the interactive
54                          // user
55  SXS_OPTION_NOT_SUPPORTED,  // 33. The chrome-sxs option provided does not work
56                             // with other command line options.
57  NON_MULTI_INSTALLATION_EXISTS,  // 34. We tried to do a multi-install but
58                                  // failed because there's an existing
59                                  // installation of the same product on the
60                                  // system, but in 'single' mode.
61  MULTI_INSTALLATION_EXISTS,  // 35. We tried to do a 'single' install but
62                              // failed because there's an existing
63                              // multi-install installation of the same product
64                              // on the system.
65  READY_MODE_OPT_IN_FAILED,   // 36. Failed to opt-into Chrome Frame.
66  READY_MODE_TEMP_OPT_OUT_FAILED,   // 37. Failed to temporarily opt-out of
67                                    // Chrome Frame.
68  READY_MODE_END_TEMP_OPT_OUT_FAILED,   // 38. Failed to end temporary opt-out
69                                        // of Chrome Frame.
70  CONFLICTING_CHANNEL_EXISTS,  // 39. A multi-install product on a different
71                               // update channel exists.
72  READY_MODE_REQUIRES_CHROME,  // 40. Chrome Frame in ready-mode requires Chrome
73  APP_HOST_REQUIRES_MULTI_INSTALL,  // 41. --multi-install was missing from the
74                               // command line.
75  APPLY_DIFF_PATCH_FAILED,     // 42. Failed to apply a diff patch.
76  INCONSISTENT_UPDATE_POLICY,  // 43. Inconsistent update policy GP settings.
77  APP_HOST_REQUIRES_USER_LEVEL,  // 44. --system-level is forbidden.
78  APP_HOST_REQUIRES_BINARIES,  // 45. No Chrome binaries at either level.
79  INSTALL_OF_GOOGLE_UPDATE_FAILED,  // 46. Failed to install Google Update.
80  INVALID_STATE_FOR_OPTION,    // 47. A non-install option was called with an
81                               // invalid installer state.
82  WAIT_FOR_EXISTING_FAILED,    // 48. OS error waiting for existing setup.exe.
83  // Friendly reminder: note the COMPILE_ASSERT below.
84};
85
86
87// Existing InstallStatus values must not change.  Always add to the end.
88COMPILE_ASSERT(installer::WAIT_FOR_EXISTING_FAILED == 48,
89               dont_change_enum);
90
91// The type of an update archive.
92enum ArchiveType {
93  UNKNOWN_ARCHIVE_TYPE,     // Unknown or uninitialized.
94  FULL_ARCHIVE_TYPE,        // Full chrome.7z archive.
95  INCREMENTAL_ARCHIVE_TYPE  // Incremental or differential archive.
96};
97
98// Stages of an installation reported through Google Update on failure.
99// The order and value of existing enums must not change. Please add new
100// values to the end (before NUM_STAGES) and update the compile assert below
101// to assert on the last value added.
102enum InstallerStage {
103  NO_STAGE,                    // 0: No stage to report.
104  PRECONDITIONS,               // 1: Evaluating pre-install conditions.
105  UNCOMPRESSING,               // 2: Uncompressing chrome.packed.7z.
106  ENSEMBLE_PATCHING,           // 3: Patching chrome.7z using courgette.
107  BINARY_PATCHING,             // 4: Patching chrome.7z using bspatch.
108  UNPACKING,                   // 5: Unpacking chrome.7z.
109  BUILDING,                    // 6: Building the install work item list.
110  EXECUTING,                   // 7: Executing the install work item list.
111  ROLLINGBACK,                 // 8: Rolling-back the install work item list.
112  REFRESHING_POLICY,           // 9: Refreshing the elevation policy.
113  UPDATING_CHANNELS,           // 10: Updating channel information.
114  COPYING_PREFERENCES_FILE,    // 11: Copying preferences file.
115  CREATING_SHORTCUTS,          // 12: Creating shortcuts.
116  REGISTERING_CHROME,          // 13: Performing Chrome registration.
117  REMOVING_OLD_VERSIONS,       // 14: Deleting old version directories.
118  FINISHING,                   // 15: Finishing the install.
119  CONFIGURE_AUTO_LAUNCH,       // 16: Configuring Chrome to auto-launch.
120  CREATING_VISUAL_MANIFEST,    // 17: Creating VisualElementsManifest.xml
121  DEFERRING_TO_HIGHER_VERSION,  // 18: Deferring to an installed higher version.
122  NUM_STAGES                   // 19: The number of stages.
123};
124
125// When we start reporting the numerical values from the enum, the order
126// above MUST be preserved.
127COMPILE_ASSERT(DEFERRING_TO_HIGHER_VERSION == 18,
128               never_ever_ever_change_InstallerStage_values_bang);
129
130namespace switches {
131extern const char kAutoLaunchChrome[];
132extern const char kChrome[];
133extern const char kChromeAppHostDeprecated[];  // TODO(huangs): Remove by M27.
134extern const char kChromeAppLauncher[];
135extern const char kChromeFrame[];
136extern const char kChromeFrameQuickEnable[];
137extern const char kChromeFrameReadyMode[];
138extern const char kChromeFrameReadyModeOptIn[];
139extern const char kChromeFrameReadyModeTempOptOut[];
140extern const char kChromeFrameReadyModeEndTempOptOut[];
141extern const char kChromeSxS[];
142extern const char kConfigureUserSettings[];
143extern const char kCriticalUpdateVersion[];
144extern const char kDeleteProfile[];
145extern const char kDisableLogging[];
146extern const char kDoNotLaunchChrome[];
147extern const char kDoNotRegisterForUpdateLaunch[];
148extern const char kDoNotRemoveSharedItems[];
149extern const char kEnableLogging[];
150extern const char kEnsureGoogleUpdatePresent[];
151extern const char kForceConfigureUserSettings[];
152extern const char kForceUninstall[];
153extern const char kInstallArchive[];
154extern const char kInstallerData[];
155extern const char kLogFile[];
156extern const char kMakeChromeDefault[];
157extern const char kMsi[];
158extern const char kMultiInstall[];
159extern const char kNewSetupExe[];
160extern const char kOnOsUpgrade[];
161extern const char kQueryEULAAcceptance[];
162extern const char kRegisterChromeBrowser[];
163extern const char kRegisterChromeBrowserSuffix[];
164extern const char kRegisterDevChrome[];
165extern const char kRegisterURLProtocol[];
166extern const char kRenameChromeExe[];
167extern const char kRemoveChromeRegistration[];
168extern const char kRunAsAdmin[];
169extern const char kSelfDestruct[];
170extern const char kSystemLevel[];
171extern const char kUninstall[];
172extern const char kUpdateSetupExe[];
173extern const char kVerboseLogging[];
174extern const char kShowEula[];
175extern const char kShowEulaForMetro[];
176extern const char kInactiveUserToast[];
177extern const char kSystemLevelToast[];
178extern const char kExperimentGroup[];
179extern const char kToastResultsKey[];
180}  // namespace switches
181
182extern const wchar_t kActiveSetupExe[];
183extern const wchar_t kChromeAppHostExe[];
184extern const wchar_t kChromeDll[];
185extern const wchar_t kChromeExe[];
186extern const wchar_t kChromeFrameDll[];
187extern const wchar_t kChromeFrameHelperExe[];
188extern const wchar_t kChromeFrameHelperWndClass[];
189extern const wchar_t kChromeFrameReadyModeField[];
190extern const wchar_t kChromeLauncherExe[];
191extern const wchar_t kChromeOldExe[];
192extern const wchar_t kChromeNewExe[];
193extern const wchar_t kCmdInstallApp[];
194extern const wchar_t kCmdInstallExtension[];
195extern const wchar_t kCmdOnOsUpgrade[];
196extern const wchar_t kCmdQueryEULAAcceptance[];
197extern const wchar_t kCmdQuickEnableApplicationHost[];
198extern const wchar_t kCmdQuickEnableCf[];
199extern const wchar_t kDelegateExecuteExe[];
200extern const wchar_t kEULASentinelFile[];
201extern const wchar_t kGoogleChromeInstallSubDir1[];
202extern const wchar_t kGoogleChromeInstallSubDir2[];
203extern const wchar_t kInstallBinaryDir[];
204extern const wchar_t kInstallerDir[];
205extern const wchar_t kInstallTempDir[];
206extern const wchar_t kInstallUserDataDir[];
207extern const wchar_t kLnkExt[];
208extern const wchar_t kNaClExe[];
209extern const wchar_t kSetupExe[];
210extern const wchar_t kSxSSuffix[];
211extern const wchar_t kUninstallArgumentsField[];
212extern const wchar_t kUninstallDisplayNameField[];
213extern const wchar_t kUninstallInstallationDate[];
214extern const char kUninstallMetricsName[];
215extern const wchar_t kUninstallStringField[];
216
217// Google Update installer result API
218extern const wchar_t kInstallerError[];
219extern const wchar_t kInstallerExtraCode1[];
220extern const wchar_t kInstallerResult[];
221extern const wchar_t kInstallerResultUIString[];
222extern const wchar_t kInstallerSuccessLaunchCmdLine[];
223
224// Product options.
225extern const wchar_t kOptionMultiInstall[];
226extern const wchar_t kOptionReadyMode[];
227
228// Chrome channel display names.
229// NOTE: Canary is not strictly a 'channel', but rather a separate product
230//     installed side-by-side. However, GoogleUpdateSettings::GetChromeChannel
231//     will return "canary" for that product.
232extern const wchar_t kChromeChannelUnknown[];
233extern const wchar_t kChromeChannelCanary[];
234extern const wchar_t kChromeChannelDev[];
235extern const wchar_t kChromeChannelBeta[];
236extern const wchar_t kChromeChannelStable[];
237
238extern const size_t kMaxAppModelIdLength;
239
240}  // namespace installer
241
242#endif  // CHROME_INSTALLER_UTIL_UTIL_CONSTANTS_H_
243