Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: chrome/installer/setup/setup_main.cc

Issue 110163004: Remove Chrome Frame ready-mode. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: compile fixes for mini_installer_test Created 7 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/installer/setup/setup_main.h" 5 #include "chrome/installer/setup/setup_main.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <msi.h> 8 #include <msi.h>
9 #include <shellapi.h> 9 #include <shellapi.h>
10 #include <shlobj.h> 10 #include <shlobj.h>
(...skipping 20 matching lines...) Expand all
31 #include "base/win/scoped_comptr.h" 31 #include "base/win/scoped_comptr.h"
32 #include "base/win/scoped_handle.h" 32 #include "base/win/scoped_handle.h"
33 #include "base/win/win_util.h" 33 #include "base/win/win_util.h"
34 #include "base/win/windows_version.h" 34 #include "base/win/windows_version.h"
35 #include "breakpad/src/client/windows/handler/exception_handler.h" 35 #include "breakpad/src/client/windows/handler/exception_handler.h"
36 #include "chrome/common/chrome_constants.h" 36 #include "chrome/common/chrome_constants.h"
37 #include "chrome/common/chrome_switches.h" 37 #include "chrome/common/chrome_switches.h"
38 #include "chrome/installer/setup/archive_patch_helper.h" 38 #include "chrome/installer/setup/archive_patch_helper.h"
39 #include "chrome/installer/setup/cf_migration.h" 39 #include "chrome/installer/setup/cf_migration.h"
40 #include "chrome/installer/setup/chrome_frame_quick_enable.h" 40 #include "chrome/installer/setup/chrome_frame_quick_enable.h"
41 #include "chrome/installer/setup/chrome_frame_ready_mode.h"
42 #include "chrome/installer/setup/install.h" 41 #include "chrome/installer/setup/install.h"
43 #include "chrome/installer/setup/install_worker.h" 42 #include "chrome/installer/setup/install_worker.h"
44 #include "chrome/installer/setup/setup_constants.h" 43 #include "chrome/installer/setup/setup_constants.h"
45 #include "chrome/installer/setup/setup_util.h" 44 #include "chrome/installer/setup/setup_util.h"
46 #include "chrome/installer/setup/uninstall.h" 45 #include "chrome/installer/setup/uninstall.h"
47 #include "chrome/installer/util/browser_distribution.h" 46 #include "chrome/installer/util/browser_distribution.h"
48 #include "chrome/installer/util/channel_info.h" 47 #include "chrome/installer/util/channel_info.h"
49 #include "chrome/installer/util/delete_after_reboot_helper.h" 48 #include "chrome/installer/util/delete_after_reboot_helper.h"
50 #include "chrome/installer/util/delete_tree_work_item.h" 49 #include "chrome/installer/util/delete_tree_work_item.h"
51 #include "chrome/installer/util/eula_util.h" 50 #include "chrome/installer/util/eula_util.h"
(...skipping 309 matching lines...) Expand 10 before | Expand all | Expand 10 after
361 *status = installer::INCONSISTENT_UPDATE_POLICY; 360 *status = installer::INCONSISTENT_UPDATE_POLICY;
362 installer_state.WriteInstallerResult( 361 installer_state.WriteInstallerResult(
363 *status, IDS_INSTALL_INCONSISTENT_UPDATE_POLICY_BASE, NULL); 362 *status, IDS_INSTALL_INCONSISTENT_UPDATE_POLICY_BASE, NULL);
364 } 363 }
365 364
366 return settings_are_valid; 365 return settings_are_valid;
367 #endif // defined(GOOGLE_CHROME_BUILD) 366 #endif // defined(GOOGLE_CHROME_BUILD)
368 } 367 }
369 368
370 // If only the binaries are being updated, fail. 369 // If only the binaries are being updated, fail.
371 // If Chrome Frame is being installed by itself in multi-mode, non-ready-mode: 370 // If Chrome Frame is being installed by itself in multi-mode:
372 // - If a non-multi Chrome Frame installation is present, fail. 371 // - If a non-multi Chrome Frame installation is present, fail.
373 // If Chrome Frame is being installed by itself in multi-mode, ready-mode:
374 // - If no Chrome installation is present, fail.
375 // - If a Chrome installation is present, add it to the set of products to
376 // install.
377 // If Chrome Frame is being installed with Chrome in multi-mode, ready-mode:
378 // - If a non-multi Chrome Frame installation is present, Chrome Frame is
379 // removed from |installer_state|'s list of products (thereby preserving
380 // the existing SxS install).
381 // - If a multi Chrome Frame installation is present, its options are
382 // preserved (i.e., the --ready-mode command-line option is ignored).
383 // If any product is being installed in single-mode that already exists in 372 // If any product is being installed in single-mode that already exists in
384 // multi-mode, fail. 373 // multi-mode, fail.
385 bool CheckMultiInstallConditions(const InstallationState& original_state, 374 bool CheckMultiInstallConditions(const InstallationState& original_state,
386 InstallerState* installer_state, 375 InstallerState* installer_state,
387 installer::InstallStatus* status) { 376 installer::InstallStatus* status) {
388 const Products& products = installer_state->products(); 377 const Products& products = installer_state->products();
389 DCHECK(products.size()); 378 DCHECK(products.size());
390 379
391 const bool system_level = installer_state->system_install(); 380 const bool system_level = installer_state->system_install();
392 381
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
448 binaries_to_add->SetOption(installer::kOptionMultiInstall, true); 437 binaries_to_add->SetOption(installer::kOptionMultiInstall, true);
449 binaries = installer_state->AddProduct(&binaries_to_add); 438 binaries = installer_state->AddProduct(&binaries_to_add);
450 VLOG(1) << 439 VLOG(1) <<
451 "Adding binaries for pre-existing App Launcher installation."; 440 "Adding binaries for pre-existing App Launcher installation.";
452 } 441 }
453 } 442 }
454 443
455 return true; 444 return true;
456 } 445 }
457 446
458 if (chrome) { 447 if (!chrome && chrome_state) {
459 if (chrome_frame &&
460 chrome_frame->HasOption(installer::kOptionReadyMode)) {
461 // We're being asked to install Chrome with Chrome Frame in ready-mode.
462 // This is an optimistic operation: if a SxS install of Chrome Frame
463 // is already present, don't touch it; if a multi-install of Chrome
464 // Frame is present, preserve its settings (ready-mode).
465 if (cf_state) {
466 installer_state->RemoveProduct(chrome_frame);
467 chrome_frame = NULL;
468 if (cf_state->is_multi_install()) {
469 chrome_frame = installer_state->AddProductFromState(
470 BrowserDistribution::CHROME_FRAME, *cf_state);
471 VLOG(1) << "Upgrading existing multi-install Chrome Frame rather "
472 "than installing in ready-mode.";
473 } else {
474 VLOG(1) << "Skipping upgrade of single-install Chrome Frame rather "
475 "than installing in ready-mode.";
476 }
477 } else {
478 VLOG(1) << "Performing initial install of Chrome Frame ready-mode.";
479 }
480 }
481 } else if (chrome_state) {
482 // A product other than Chrome is being installed in multi-install mode, 448 // A product other than Chrome is being installed in multi-install mode,
483 // and Chrome is already present. Add Chrome to the set of products 449 // and Chrome is already present. Add Chrome to the set of products
484 // (making it multi-install in the process) so that it is updated, too. 450 // (making it multi-install in the process) so that it is updated, too.
485 scoped_ptr<Product> multi_chrome(new Product( 451 scoped_ptr<Product> multi_chrome(new Product(
486 BrowserDistribution::GetSpecificDistribution( 452 BrowserDistribution::GetSpecificDistribution(
487 BrowserDistribution::CHROME_BROWSER))); 453 BrowserDistribution::CHROME_BROWSER)));
488 multi_chrome->SetOption(installer::kOptionMultiInstall, true); 454 multi_chrome->SetOption(installer::kOptionMultiInstall, true);
489 chrome = installer_state->AddProduct(&multi_chrome); 455 chrome = installer_state->AddProduct(&multi_chrome);
490 VLOG(1) << "Upgrading existing Chrome browser in multi-install mode."; 456 VLOG(1) << "Upgrading existing Chrome browser in multi-install mode.";
491 } else if (chrome_frame &&
492 chrome_frame->HasOption(installer::kOptionReadyMode)) {
493 // Chrome Frame with ready-mode is to be installed, yet Chrome is
494 // neither installed nor being installed. Fail.
495 LOG(ERROR) << "Cannot install Chrome Frame in ready mode without Chrome.";
496 *status = installer::READY_MODE_REQUIRES_CHROME;
497 installer_state->WriteInstallerResult(
498 *status, IDS_INSTALL_READY_MODE_REQUIRES_CHROME_BASE, NULL);
499 return false;
500 } 457 }
501 458
502 // Fail if we're installing Chrome Frame when a single-install of it is 459 // Fail if we're installing Chrome Frame when a single-install of it is
503 // already installed. 460 // already installed.
504 if (chrome_frame && cf_state && !cf_state->is_multi_install()) { 461 if (chrome_frame && cf_state && !cf_state->is_multi_install()) {
505 LOG(ERROR) << "Cannot migrate existing Chrome Frame installation to " 462 LOG(ERROR) << "Cannot migrate existing Chrome Frame installation to "
506 << "multi-install."; 463 << "multi-install.";
507 *status = installer::NON_MULTI_INSTALLATION_EXISTS; 464 *status = installer::NON_MULTI_INSTALLATION_EXISTS;
508 installer_state->WriteInstallerResult(*status, 465 installer_state->WriteInstallerResult(*status,
509 IDS_INSTALL_NON_MULTI_INSTALLATION_EXISTS_BASE, NULL); 466 IDS_INSTALL_NON_MULTI_INSTALLATION_EXISTS_BASE, NULL);
(...skipping 738 matching lines...) Expand 10 before | Expand all | Expand 10 after
1248 InstallUtil::GetChromeVersion(browser_dist, true, &installed_version); 1205 InstallUtil::GetChromeVersion(browser_dist, true, &installed_version);
1249 if (!installed_version.IsValid()) { 1206 if (!installed_version.IsValid()) {
1250 LOG(ERROR) << "No installation of " 1207 LOG(ERROR) << "No installation of "
1251 << browser_dist->GetDisplayName() 1208 << browser_dist->GetDisplayName()
1252 << " found for system-level toast."; 1209 << " found for system-level toast.";
1253 } else { 1210 } else {
1254 product.LaunchUserExperiment( 1211 product.LaunchUserExperiment(
1255 cmd_line.GetProgram(), installer::REENTRY_SYS_UPDATE, true); 1212 cmd_line.GetProgram(), installer::REENTRY_SYS_UPDATE, true);
1256 } 1213 }
1257 } 1214 }
1258 } else if (cmd_line.HasSwitch(
1259 installer::switches::kChromeFrameReadyModeOptIn)) {
1260 *exit_code = InstallUtil::GetInstallReturnCode(
1261 installer::ChromeFrameReadyModeOptIn(original_state, *installer_state));
1262 } else if (cmd_line.HasSwitch(
1263 installer::switches::kChromeFrameReadyModeTempOptOut)) {
1264 *exit_code = InstallUtil::GetInstallReturnCode(
1265 installer::ChromeFrameReadyModeTempOptOut(original_state,
1266 *installer_state));
1267 } else if (cmd_line.HasSwitch(
1268 installer::switches::kChromeFrameReadyModeEndTempOptOut)) {
1269 *exit_code = InstallUtil::GetInstallReturnCode(
1270 installer::ChromeFrameReadyModeEndTempOptOut(original_state,
1271 *installer_state));
1272 } else if (cmd_line.HasSwitch(installer::switches::kChromeFrameQuickEnable)) { 1215 } else if (cmd_line.HasSwitch(installer::switches::kChromeFrameQuickEnable)) {
1273 *exit_code = installer::ChromeFrameQuickEnable(original_state, 1216 *exit_code = installer::ChromeFrameQuickEnable(original_state,
1274 installer_state); 1217 installer_state);
1275 } else if (cmd_line.HasSwitch(installer::switches::kPatch)) { 1218 } else if (cmd_line.HasSwitch(installer::switches::kPatch)) {
1276 const std::string patch_type_str( 1219 const std::string patch_type_str(
1277 cmd_line.GetSwitchValueASCII(installer::switches::kPatch)); 1220 cmd_line.GetSwitchValueASCII(installer::switches::kPatch));
1278 const base::FilePath input_file( 1221 const base::FilePath input_file(
1279 cmd_line.GetSwitchValuePath(installer::switches::kInputFile)); 1222 cmd_line.GetSwitchValuePath(installer::switches::kInputFile));
1280 const base::FilePath patch_file( 1223 const base::FilePath patch_file(
1281 cmd_line.GetSwitchValuePath(installer::switches::kPatchFile)); 1224 cmd_line.GetSwitchValuePath(installer::switches::kPatchFile));
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after
1947 // Call the newly updated setup.exe with kUncompressedArchive and 1890 // Call the newly updated setup.exe with kUncompressedArchive and
1948 // kMigrateChromeFrame to perform the migration. 1891 // kMigrateChromeFrame to perform the migration.
1949 LaunchChromeFrameMigrationProcess(*chrome_frame_state, cmd_line, 1892 LaunchChromeFrameMigrationProcess(*chrome_frame_state, cmd_line,
1950 installer_directory, system_install); 1893 installer_directory, system_install);
1951 } 1894 }
1952 1895
1953 VLOG(1) << "Installation complete, returning: " << return_code; 1896 VLOG(1) << "Installation complete, returning: " << return_code;
1954 1897
1955 return return_code; 1898 return return_code;
1956 } 1899 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698