15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Defines all install related constants that need to be used by Chrome as
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// well as Chrome Installer.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef CHROME_INSTALLER_UTIL_UTIL_CONSTANTS_H_
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHROME_INSTALLER_UTIL_UTIL_CONSTANTS_H_
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace installer {
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Return status of installer
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum InstallStatus {
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FIRST_INSTALL_SUCCESS,  // 0. Successfully installed Chrome for the first time
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  INSTALL_REPAIRED,       // 1. Same version reinstalled for repair
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NEW_VERSION_UPDATED,    // 2. Chrome successfully updated to new version
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXISTING_VERSION_LAUNCHED,  // 3. No work done, just launched existing chrome
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  HIGHER_VERSION_EXISTS,  // 4. Higher version of Chrome already exists
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  USER_LEVEL_INSTALL_EXISTS,  // 5. User level install already exists
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SYSTEM_LEVEL_INSTALL_EXISTS,  // 6. Machine level install already exists
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  INSTALL_FAILED,         // 7. Install/update failed
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SETUP_PATCH_FAILED,     // 8. Failed to patch setup.exe
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OS_NOT_SUPPORTED,       // 9. Current OS not supported
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  OS_ERROR,               // 10. OS API call failed
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  TEMP_DIR_FAILED,        // 11. Unable to get Temp directory
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNCOMPRESSION_FAILED,   // 12. Failed to uncompress Chrome archive
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  INVALID_ARCHIVE,        // 13. Something wrong with the installer archive
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  INSUFFICIENT_RIGHTS,    // 14. User trying system level install is not Admin
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHROME_NOT_INSTALLED,   // 15. Chrome not installed (returned in case of
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // uninstall)
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CHROME_RUNNING,         // 16. Chrome currently running (when trying to
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // uninstall)
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNINSTALL_CONFIRMED,    // 17. User has confirmed Chrome uninstall
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNINSTALL_DELETE_PROFILE,  // 18. User okayed uninstall and profile deletion.
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNINSTALL_SUCCESSFUL,   // 19. Chrome successfully uninstalled
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNINSTALL_FAILED,       // 20. Chrome uninstallation failed
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNINSTALL_CANCELLED,    // 21. User cancelled Chrome uninstallation
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNKNOWN_STATUS,         // 22. Unknown status (this should never happen)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RENAME_SUCCESSFUL,      // 23. Rename of new_chrome.exe to chrome.exe worked
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  RENAME_FAILED,          // 24. Rename of new_chrome.exe failed
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EULA_REJECTED,          // 25. EULA dialog was not accepted by user.
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EULA_ACCEPTED,          // 26. EULA dialog was accepted by user.
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EULA_ACCEPTED_OPT_IN,   // 27. EULA accepted with the crash option selected.
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  INSTALL_DIR_IN_USE,     // 28. Installation directory is in use by another
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // process
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNINSTALL_REQUIRES_REBOOT,  // 29. Uninstallation required a reboot.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  IN_USE_UPDATED,         // 30. Chrome successfully updated but old version
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // running
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SAME_VERSION_REPAIR_FAILED,  // 31. Chrome repair failed as Chrome was running
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  REENTRY_SYS_UPDATE,     // 32. Setup has been re-launched as the interactive
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                          // user
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  SXS_OPTION_NOT_SUPPORTED,  // 33. The chrome-sxs option provided does not work
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                             // with other command line options.
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NON_MULTI_INSTALLATION_EXISTS,  // 34. We tried to do a multi-install but
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  // failed because there's an existing
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  // installation of the same product on the
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  // system, but in 'single' mode.
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  MULTI_INSTALLATION_EXISTS,  // 35. We tried to do a 'single' install but
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              // failed because there's an existing
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              // multi-install installation of the same product
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                              // on the system.
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  READY_MODE_OPT_IN_FAILED,   // 36. Failed to opt-into Chrome Frame.
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  READY_MODE_TEMP_OPT_OUT_FAILED,   // 37. Failed to temporarily opt-out of
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                    // Chrome Frame.
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  READY_MODE_END_TEMP_OPT_OUT_FAILED,   // 38. Failed to end temporary opt-out
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        // of Chrome Frame.
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONFLICTING_CHANNEL_EXISTS,  // 39. A multi-install product on a different
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               // update channel exists.
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  READY_MODE_REQUIRES_CHROME,  // 40. Chrome Frame in ready-mode requires Chrome
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  APP_HOST_REQUIRES_MULTI_INSTALL,  // 41. --multi-install was missing from the
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               // command line.
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  APPLY_DIFF_PATCH_FAILED,     // 42. Failed to apply a diff patch.
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  INCONSISTENT_UPDATE_POLICY,  // 43. Inconsistent update policy GP settings.
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  APP_HOST_REQUIRES_USER_LEVEL,  // 44. --system-level is forbidden.
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  APP_HOST_REQUIRES_BINARIES,  // 45. No Chrome binaries at either level.
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  INSTALL_OF_GOOGLE_UPDATE_FAILED,  // 46. Failed to install Google Update.
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  INVALID_STATE_FOR_OPTION,    // 47. A non-install option was called with an
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                               // invalid installer state.
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  WAIT_FOR_EXISTING_FAILED,    // 48. OS error waiting for existing setup.exe.
83eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  PATCH_INVALID_ARGUMENTS,     // 49. The arguments of --patch were missing or
84eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch                               // they were invalid for any reason.
85ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  DIFF_PATCH_SOURCE_MISSING,   // 50. No previous version archive found for
86ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch                               // differential update.
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Friendly reminder: note the COMPILE_ASSERT below.
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Existing InstallStatus values must not change.  Always add to the end.
92ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben MurdochCOMPILE_ASSERT(installer::DIFF_PATCH_SOURCE_MISSING == 50,
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               dont_change_enum);
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The type of an update archive.
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum ArchiveType {
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNKNOWN_ARCHIVE_TYPE,     // Unknown or uninitialized.
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FULL_ARCHIVE_TYPE,        // Full chrome.7z archive.
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  INCREMENTAL_ARCHIVE_TYPE  // Incremental or differential archive.
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Stages of an installation reported through Google Update on failure.
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// The order and value of existing enums must not change. Please add new
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// values to the end (before NUM_STAGES) and update the compile assert below
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// to assert on the last value added.
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)enum InstallerStage {
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NO_STAGE,                    // 0: No stage to report.
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  PRECONDITIONS,               // 1: Evaluating pre-install conditions.
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNCOMPRESSING,               // 2: Uncompressing chrome.packed.7z.
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ENSEMBLE_PATCHING,           // 3: Patching chrome.7z using courgette.
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BINARY_PATCHING,             // 4: Patching chrome.7z using bspatch.
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UNPACKING,                   // 5: Unpacking chrome.7z.
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  BUILDING,                    // 6: Building the install work item list.
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  EXECUTING,                   // 7: Executing the install work item list.
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ROLLINGBACK,                 // 8: Rolling-back the install work item list.
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  REFRESHING_POLICY,           // 9: Refreshing the elevation policy.
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  UPDATING_CHANNELS,           // 10: Updating channel information.
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  COPYING_PREFERENCES_FILE,    // 11: Copying preferences file.
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CREATING_SHORTCUTS,          // 12: Creating shortcuts.
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  REGISTERING_CHROME,          // 13: Performing Chrome registration.
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  REMOVING_OLD_VERSIONS,       // 14: Deleting old version directories.
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  FINISHING,                   // 15: Finishing the install.
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CONFIGURE_AUTO_LAUNCH,       // 16: Configuring Chrome to auto-launch.
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  CREATING_VISUAL_MANIFEST,    // 17: Creating VisualElementsManifest.xml
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DEFERRING_TO_HIGHER_VERSION,  // 18: Deferring to an installed higher version.
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  NUM_STAGES                   // 19: The number of stages.
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// When we start reporting the numerical values from the enum, the order
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// above MUST be preserved.
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)COMPILE_ASSERT(DEFERRING_TO_HIGHER_VERSION == 18,
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)               never_ever_ever_change_InstallerStage_values_bang);
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace switches {
135eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kAutoLaunchChrome[];
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kChrome[];
1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern const char kChromeAppHostDeprecated[];  // TODO(huangs): Remove by M27.
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kChromeAppLauncher[];
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kChromeFrame[];
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kChromeFrameQuickEnable[];
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kChromeFrameReadyMode[];
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kChromeFrameReadyModeOptIn[];
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kChromeFrameReadyModeTempOptOut[];
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kChromeFrameReadyModeEndTempOptOut[];
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kChromeSxS[];
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kConfigureUserSettings[];
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kCriticalUpdateVersion[];
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kDeleteProfile[];
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kDisableLogging[];
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kDoNotLaunchChrome[];
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kDoNotRegisterForUpdateLaunch[];
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kDoNotRemoveSharedItems[];
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kEnableLogging[];
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kEnsureGoogleUpdatePresent[];
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kForceConfigureUserSettings[];
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kForceUninstall[];
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kInstallArchive[];
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kInstallerData[];
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kLogFile[];
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kMakeChromeDefault[];
162558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdochextern const char kMigrateChromeFrame[];
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kMsi[];
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kMultiInstall[];
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kNewSetupExe[];
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kOnOsUpgrade[];
1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern const char kQueryEULAAcceptance[];
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kRegisterChromeBrowser[];
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kRegisterChromeBrowserSuffix[];
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kRegisterDevChrome[];
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kRegisterURLProtocol[];
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kRenameChromeExe[];
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kRemoveChromeRegistration[];
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kRunAsAdmin[];
1752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern const char kSelfDestruct[];
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kSystemLevel[];
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kUninstall[];
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kUpdateSetupExe[];
179ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochextern const char kUncompressedArchive[];
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kVerboseLogging[];
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kShowEula[];
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kShowEulaForMetro[];
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kInactiveUserToast[];
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kSystemLevelToast[];
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kExperimentGroup[];
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kToastResultsKey[];
187eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochextern const char kPatch[];
188eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochextern const char kInputFile[];
189eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochextern const char kPatchFile[];
190eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochextern const char kOutputFile[];
191eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace switches
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern const wchar_t kActiveSetupExe[];
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeAppHostExe[];
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeDll[];
197ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochextern const wchar_t kChromeChildDll[];
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeExe[];
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeFrameDll[];
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeFrameHelperExe[];
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeFrameHelperWndClass[];
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeFrameReadyModeField[];
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeLauncherExe[];
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeOldExe[];
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeNewExe[];
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kCmdInstallApp[];
2072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern const wchar_t kCmdInstallExtension[];
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kCmdOnOsUpgrade[];
2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)extern const wchar_t kCmdQueryEULAAcceptance[];
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kCmdQuickEnableApplicationHost[];
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kCmdQuickEnableCf[];
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kDelegateExecuteExe[];
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kEULASentinelFile[];
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kGoogleChromeInstallSubDir1[];
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kGoogleChromeInstallSubDir2[];
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kInstallBinaryDir[];
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kInstallerDir[];
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kInstallTempDir[];
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kInstallUserDataDir[];
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kLnkExt[];
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kNaClExe[];
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kSetupExe[];
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kSxSSuffix[];
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kUninstallArgumentsField[];
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kUninstallDisplayNameField[];
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kUninstallInstallationDate[];
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const char kUninstallMetricsName[];
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kUninstallStringField[];
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Google Update installer result API
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kInstallerError[];
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kInstallerExtraCode1[];
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kInstallerResult[];
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kInstallerResultUIString[];
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kInstallerSuccessLaunchCmdLine[];
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Product options.
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kOptionMultiInstall[];
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kOptionReadyMode[];
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Chrome channel display names.
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// NOTE: Canary is not strictly a 'channel', but rather a separate product
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//     installed side-by-side. However, GoogleUpdateSettings::GetChromeChannel
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//     will return "canary" for that product.
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeChannelUnknown[];
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeChannelCanary[];
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeChannelDev[];
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeChannelBeta[];
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const wchar_t kChromeChannelStable[];
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const size_t kMaxAppModelIdLength;
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
253eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// The range of error values for the installer, Courgette, and bsdiff is
254eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// overlapping. These offset values disambiguate between different sets
255eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// of errors by shifting the values up with the specified offset.
256eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochconst int kCourgetteErrorOffset = 300;
257eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochconst int kBsdiffErrorOffset = 600;
258eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
259eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Arguments to --patch switch
260eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochextern const char kCourgette[];
261eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochextern const char kBsdiff[];
262eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace installer
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif  // CHROME_INSTALLER_UTIL_UTIL_CONSTANTS_H_
266