Home | History | Annotate | Download | only in util
      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 #include "chrome/installer/util/util_constants.h"
      6 
      7 namespace installer {
      8 
      9 namespace switches {
     10 
     11 // Whether to set Chrome to launch at computer startup.
     12 const char kAutoLaunchChrome[] = "auto-launch-chrome";
     13 
     14 // Install Chrome.
     15 // Currently this is only required when used in combination with kMultiInstall.
     16 const char kChrome[] = "chrome";
     17 
     18 // Install Chrome App Host. This is now interpreted as kChromeAppLauncher.
     19 // TODO(huangs): Remove by M27.
     20 const char kChromeAppHostDeprecated[] = "app-host";
     21 
     22 // Install Chrome App Launcher, which subsumes Chrome App Host, i.e.,
     23 // App Launcher install converts App Host to App Launcher, and all subsequent
     24 // App Host updates/uninstalls become App Launcher updates/uninstalls.
     25 const char kChromeAppLauncher[] = "app-launcher";
     26 
     27 // Install Chrome Frame.
     28 const char kChromeFrame[] = "chrome-frame";
     29 
     30 // Installs Chrome Frame from an already installed multi-install of Chrome.
     31 const char kChromeFrameQuickEnable[] = "quick-enable-cf";
     32 
     33 // When installing Chrome Frame, install it in ready mode.
     34 // If --chrome-frame is not on the command line, this switch has no effect.
     35 const char kChromeFrameReadyMode[] = "ready-mode";
     36 
     37 // GCF ready mode opt-in.  This enables a full installation of GCF.
     38 const char kChromeFrameReadyModeOptIn[] = "ready-mode-opt-in";
     39 
     40 // GCF ready mode temp opt-out.  This disables the GCF user agent modification
     41 // and detection of headers/meta tags.
     42 const char kChromeFrameReadyModeTempOptOut[] = "ready-mode-temp-opt-out";
     43 
     44 // End GCF ready mode temp opt-out.  This re-enables the GCF user agent
     45 // modification and detection of headers/meta tags.
     46 const char kChromeFrameReadyModeEndTempOptOut[] = "ready-mode-end-temp-opt-out";
     47 
     48 // Run the installer for Chrome SxS.
     49 const char kChromeSxS[] = "chrome-sxs";
     50 
     51 // Create shortcuts for this user to point to a system-level install (which
     52 // must already be installed on the machine). The shortcuts created will
     53 // match the preferences of the already present system-level install as such
     54 // this option is not compatible with any other installer options.
     55 const char kConfigureUserSettings[] = "configure-user-settings";
     56 
     57 // The version number of an update containing critical fixes, for which an
     58 // in-use Chrome should be restarted ASAP.
     59 const char kCriticalUpdateVersion[] = "critical-update-version";
     60 
     61 // Delete user profile data. This param is useful only when specified with
     62 // kUninstall, otherwise it is silently ignored.
     63 const char kDeleteProfile[] = "delete-profile";
     64 
     65 // Disable logging
     66 const char kDisableLogging[] = "disable-logging";
     67 
     68 // Prevent installer from launching Chrome after a successful first install.
     69 const char kDoNotLaunchChrome[] = "do-not-launch-chrome";
     70 
     71 // Prevents installer from writing the Google Update key that causes Google
     72 // Update to launch Chrome after a first install.
     73 const char kDoNotRegisterForUpdateLaunch[] =
     74     "do-not-register-for-update-launch";
     75 
     76 // By default we remove all shared (between users) files, registry entries etc
     77 // during uninstall. If this option is specified together with kUninstall option
     78 // we do not clean up shared entries otherwise this option is ignored.
     79 const char kDoNotRemoveSharedItems[] = "do-not-remove-shared-items";
     80 
     81 // Enable logging at the error level. This is the default behavior.
     82 const char kEnableLogging[] = "enable-logging";
     83 
     84 // Ensures that Google Update is present at the current level of installation.
     85 const char kEnsureGoogleUpdatePresent[] = "ensure-google-update-present";
     86 
     87 // Same as kConfigureUserSettings above; except the checks to know whether
     88 // first run already occured are bypassed and shortcuts are created either way
     89 // (kConfigureUserSettings also needs to be on the command-line for this to have
     90 // any effect).
     91 const char kForceConfigureUserSettings[] = "force-configure-user-settings";
     92 
     93 // If present, setup will uninstall chrome without asking for any
     94 // confirmation from user.
     95 const char kForceUninstall[] = "force-uninstall";
     96 
     97 // Specify the path to the compressed Chrome archive for install. If not
     98 // specified, chrome.packed.7z or chrome.7z in the same directory as setup.exe
     99 // is used (the packed file is preferred; see kUncompressedArchive to force use
    100 // of an uncompressed archive).
    101 const char kInstallArchive[] = "install-archive";
    102 
    103 // Specify the file path of Chrome master preference file.
    104 const char kInstallerData[] = "installerdata";
    105 
    106 // If present, specify file path to write logging info.
    107 const char kLogFile[] = "log-file";
    108 
    109 // Register Chrome as default browser on the system. Usually this will require
    110 // that setup is running as admin. If running as admin we try to register
    111 // as default browser at system level, if running as non-admin we try to
    112 // register as default browser only for the current user.
    113 const char kMakeChromeDefault[] = "make-chrome-default";
    114 
    115 // Migrate multi-install Chrome Frame to single-install. Use in conjunction with
    116 // --uncompressed-archive.
    117 const char kMigrateChromeFrame[] = "migrate-chrome-frame";
    118 
    119 // Tells installer to expect to be run as a subsidiary to an MSI.
    120 const char kMsi[] = "msi";
    121 
    122 // Tells installer to install multiple products specified on the command line.
    123 // (e.g. Chrome Frame, Chrome)
    124 const char kMultiInstall[] = "multi-install";
    125 
    126 // Useful only when used with --update-setup-exe, otherwise ignored. It
    127 // specifies the full path where updated setup.exe will be stored.
    128 const char kNewSetupExe[] = "new-setup-exe";
    129 
    130 // Notify the installer that the OS has been upgraded.
    131 const char kOnOsUpgrade[] = "on-os-upgrade";
    132 
    133 // Determines whether or not EULA has been accepted at some point. Returns via
    134 // exit code: 0 if EULA not accepted, 1 if EULA accepted, and E_FAIL on error.
    135 const char kQueryEULAAcceptance[] = "query-eula-acceptance";
    136 
    137 // Register Chrome as a valid browser on the current sytem. This option
    138 // requires that setup.exe is running as admin. If this option is specified,
    139 // options kInstallArchive and kUninstall are ignored.
    140 const char kRegisterChromeBrowser[] = "register-chrome-browser";
    141 
    142 // Used by the installer to forward the registration suffix of the
    143 // (un)installation in progress when launching an elevated setup.exe to finish
    144 // registration work.
    145 const char kRegisterChromeBrowserSuffix[] = "register-chrome-browser-suffix";
    146 
    147 // Specify the path to the dev build of chrome.exe the user wants to install
    148 // (register and install Start menu shortcut for) on the system. This will
    149 // always result in a user-level install and will make this install default
    150 // browser.
    151 const char kRegisterDevChrome[] = "register-dev-chrome";
    152 
    153 // Switch to allow an extra URL protocol to be registered. This option is used
    154 // in conjunction with kRegisterChromeBrowser to specify an extra protocol
    155 // in addition to the standard set of protocols.
    156 const char kRegisterURLProtocol[] = "register-url-protocol";
    157 
    158 // Renames chrome.exe to old_chrome.exe and renames new_chrome.exe to chrome.exe
    159 // to support in-use updates. Also deletes opv key.
    160 const char kRenameChromeExe[] = "rename-chrome-exe";
    161 
    162 // Removes Chrome registration from current machine. Requires admin rights.
    163 const char kRemoveChromeRegistration[] = "remove-chrome-registration";
    164 
    165 // When we try to relaunch setup.exe as admin on Vista, we append this command
    166 // line flag so that we try the launch only once.
    167 const char kRunAsAdmin[] = "run-as-admin";
    168 
    169 // Combined with --uninstall, signals to setup.exe that this uninstall was
    170 // triggered by a self-destructing Chrome.
    171 const char kSelfDestruct[] = "self-destruct";
    172 
    173 // Install Chrome to system wise location. The default is per user install.
    174 const char kSystemLevel[] = "system-level";
    175 
    176 // If present, setup will uninstall chrome.
    177 const char kUninstall[] = "uninstall";
    178 
    179 // Also see --new-setup-exe. This command line option specifies a diff patch
    180 // that setup.exe will apply to itself and store the resulting binary in the
    181 // path given by --new-setup-exe.
    182 const char kUpdateSetupExe[] = "update-setup-exe";
    183 
    184 // Use the given uncompressed chrome.7z archive as the source of files to
    185 // install.
    186 const char kUncompressedArchive[] = "uncompressed-archive";
    187 
    188 // Enable verbose logging (info level).
    189 const char kVerboseLogging[] = "verbose-logging";
    190 
    191 // Show the embedded EULA dialog.
    192 const char kShowEula[] = "show-eula";
    193 
    194 // Show the embedded EULA dialog, relaunch metro Chrome on acceptance.
    195 const char kShowEulaForMetro[] = "show-eula-for-metro";
    196 
    197 // Perform the inactive user toast experiment.
    198 const char kInactiveUserToast[] = "inactive-user-toast";
    199 
    200 // User toast experiment switch from system context to user context.
    201 const char kSystemLevelToast[] = "system-level-toast";
    202 
    203 // The group this experiment belongs to.
    204 const char kExperimentGroup[] = "experiment-group";
    205 
    206 // A handle value of the key to write the results of the toast experiment
    207 // to. See DuplicateGoogleUpdateSystemClientKey for details.
    208 const char kToastResultsKey[] = "toast-results-key";
    209 
    210 // Applies a binary patch to a file. The input, patch, and the output file are
    211 // specified as command line arguments following the --patch switch.
    212 // Ex: --patch=courgette --input_file='input' --patch_file='patch'
    213 //        --output_file='output'
    214 const char kPatch[] = "patch";
    215 const char kInputFile[] = "input-file";
    216 const char kPatchFile[] = "patch-file";
    217 const char kOutputFile[] = "output-file";
    218 
    219 }  // namespace switches
    220 
    221 // The Active Setup executable will be an identical copy of setup.exe; this is
    222 // necessary because Windows' installer detection heuristics (which include
    223 // things like process name being "setup.exe") will otherwise force elevation
    224 // for non-admin users when setup.exe is launched. This is mitigated by adding
    225 // requestedExecutionLevel="asInvoker" to setup.exe's manifest on Vista+, but
    226 // there is no such manifest entry on Windows XP (which results in
    227 // crbug.com/166473).
    228 // TODO(gab): Rename setup.exe itself altogether and use the same binary for
    229 // Active Setup.
    230 const wchar_t kActiveSetupExe[] = L"chrmstp.exe";
    231 const wchar_t kChromeAppHostExe[] = L"app_host.exe";
    232 const wchar_t kChromeDll[] = L"chrome.dll";
    233 const wchar_t kChromeChildDll[] = L"chrome_child.dll";
    234 const wchar_t kChromeExe[] = L"chrome.exe";
    235 const wchar_t kChromeFrameDll[] = L"npchrome_frame.dll";
    236 const wchar_t kChromeFrameHelperExe[] = L"chrome_frame_helper.exe";
    237 const wchar_t kChromeFrameHelperWndClass[] = L"ChromeFrameHelperWindowClass";
    238 const wchar_t kChromeFrameReadyModeField[] = L"ChromeFrameReadyMode";
    239 const wchar_t kChromeLauncherExe[] = L"chrome_launcher.exe";
    240 const wchar_t kChromeNewExe[] = L"new_chrome.exe";
    241 const wchar_t kChromeOldExe[] = L"old_chrome.exe";
    242 const wchar_t kCmdInstallApp[] = L"install-application";
    243 const wchar_t kCmdInstallExtension[] = L"install-extension";
    244 const wchar_t kCmdOnOsUpgrade[] = L"on-os-upgrade";
    245 const wchar_t kCmdQueryEULAAcceptance[] = L"query-eula-acceptance";
    246 const wchar_t kCmdQuickEnableApplicationHost[] =
    247     L"quick-enable-application-host";
    248 const wchar_t kCmdQuickEnableCf[] = L"quick-enable-cf";
    249 const wchar_t kDelegateExecuteExe[] = L"delegate_execute.exe";
    250 const wchar_t kEULASentinelFile[] = L"EULA Accepted";
    251 const wchar_t kGoogleChromeInstallSubDir1[] = L"Google";
    252 const wchar_t kGoogleChromeInstallSubDir2[] = L"Chrome";
    253 const wchar_t kInstallBinaryDir[] = L"Application";
    254 const wchar_t kInstallerDir[] = L"Installer";
    255 const wchar_t kInstallTempDir[] = L"Temp";
    256 const wchar_t kInstallUserDataDir[] = L"User Data";
    257 const wchar_t kLnkExt[] = L".lnk";
    258 const wchar_t kNaClExe[] = L"nacl64.exe";
    259 const wchar_t kSetupExe[] = L"setup.exe";
    260 const wchar_t kSxSSuffix[] = L" SxS";
    261 const wchar_t kUninstallStringField[] = L"UninstallString";
    262 const wchar_t kUninstallArgumentsField[] = L"UninstallArguments";
    263 const wchar_t kUninstallDisplayNameField[] = L"DisplayName";
    264 const char kUninstallMetricsName[] = "uninstall_metrics";
    265 const wchar_t kUninstallInstallationDate[] = L"installation_date";
    266 const wchar_t kInstallerError[] = L"InstallerError";
    267 const wchar_t kInstallerExtraCode1[] = L"InstallerExtraCode1";
    268 const wchar_t kInstallerResult[] = L"InstallerResult";
    269 const wchar_t kInstallerResultUIString[] = L"InstallerResultUIString";
    270 const wchar_t kInstallerSuccessLaunchCmdLine[] =
    271     L"InstallerSuccessLaunchCmdLine";
    272 
    273 const wchar_t kOptionMultiInstall[] = L"multi-install";
    274 const wchar_t kOptionReadyMode[] = L"ready-mode";
    275 
    276 // Chrome channel display names.
    277 const wchar_t kChromeChannelUnknown[] = L"unknown";
    278 const wchar_t kChromeChannelCanary[] = L"canary";
    279 const wchar_t kChromeChannelDev[] = L"dev";
    280 const wchar_t kChromeChannelBeta[] = L"beta";
    281 const wchar_t kChromeChannelStable[] = L"";
    282 
    283 const size_t kMaxAppModelIdLength = 64U;
    284 
    285 const char kCourgette[] = "courgette";
    286 const char kBsdiff[] = "bsdiff";
    287 
    288 }  // namespace installer
    289