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

Unified Diff: chrome/installer/setup/install.cc

Issue 2589753002: Remove multi-install from chrome/installer/setup. (Closed)
Patch Set: sync to position 442053 Created 3 years, 11 months 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/installer/setup/install.h ('k') | chrome/installer/setup/install_worker.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/setup/install.cc
diff --git a/chrome/installer/setup/install.cc b/chrome/installer/setup/install.cc
index b17e0db4cb3679aa5fbbdf0e113961fa0b0b6a56..14945b805da3fa0a208d9ffd823fbcee36a2fb16 100644
--- a/chrome/installer/setup/install.cc
+++ b/chrome/installer/setup/install.cc
@@ -21,11 +21,9 @@
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/win/shortcut.h"
-#include "base/win/windows_version.h"
-#include "chrome/common/chrome_constants.h"
-#include "chrome/common/chrome_switches.h"
#include "chrome/installer/setup/install_worker.h"
#include "chrome/installer/setup/installer_crash_reporting.h"
+#include "chrome/installer/setup/installer_state.h"
#include "chrome/installer/setup/setup_constants.h"
#include "chrome/installer/setup/setup_util.h"
#include "chrome/installer/setup/update_active_setup_version_work_item.h"
@@ -34,12 +32,10 @@
#include "chrome/installer/util/create_reg_key_work_item.h"
#include "chrome/installer/util/delete_after_reboot_helper.h"
#include "chrome/installer/util/delete_old_versions.h"
-#include "chrome/installer/util/google_update_constants.h"
-#include "chrome/installer/util/helper.h"
#include "chrome/installer/util/install_util.h"
+#include "chrome/installer/util/installation_state.h"
#include "chrome/installer/util/master_preferences.h"
#include "chrome/installer/util/master_preferences_constants.h"
-#include "chrome/installer/util/set_reg_value_work_item.h"
#include "chrome/installer/util/util_constants.h"
#include "chrome/installer/util/work_item.h"
#include "chrome/installer/util/work_item_list.h"
@@ -103,10 +99,8 @@ void LogShortcutOperation(ShellUtil::ShortcutLocation location,
if (properties.has_arguments())
message.append(base::UTF16ToUTF8(properties.arguments));
- if (properties.pin_to_taskbar &&
- base::win::GetVersion() >= base::win::VERSION_WIN7) {
+ if (properties.pin_to_taskbar && base::win::CanPinShortcutToTaskbar())
message.append(" and pinning to the taskbar");
- }
message.push_back('.');
@@ -223,10 +217,6 @@ installer::InstallStatus InstallNewVersion(
return result;
}
- installer_state.SetStage(installer::REFRESHING_POLICY);
-
- installer::RefreshElevationPolicy();
-
if (!current_version->get()) {
VLOG(1) << "First install of version " << new_version;
return installer::FIRST_INSTALL_SUCCESS;
@@ -265,7 +255,7 @@ installer::InstallStatus InstallNewVersion(
return installer::INSTALL_FAILED;
}
-} // end namespace
+} // namespace
namespace installer {
@@ -480,8 +470,6 @@ InstallStatus InstallOrUpdateProduct(
const base::FilePath& prefs_path,
const MasterPreferences& prefs,
const base::Version& new_version) {
- DCHECK(!installer_state.products().empty());
-
// TODO(robertshield): Removing the pending on-reboot moves should be done
// elsewhere.
// Remove any scheduled MOVEFILE_DELAY_UNTIL_REBOOT entries in the target of
@@ -507,8 +495,9 @@ InstallStatus InstallOrUpdateProduct(
if (!InstallUtil::GetInstallReturnCode(result)) {
installer_state.SetStage(UPDATING_CHANNELS);
- // Update the modifiers on the channel values for the product(s) being
- // installed and for the binaries in case of multi-install.
+ // Strip evidence of multi-install from the "ap" value.
+ // TODO(grt): Consider doing this earlier, prior to any other work, so that
+ // failed updates benefit from the stripping.
installer_state.UpdateChannels();
installer_state.SetStage(COPYING_PREFERENCES_FILE);
@@ -518,66 +507,59 @@ InstallStatus InstallOrUpdateProduct(
installer_state.SetStage(CREATING_SHORTCUTS);
- const installer::Product* chrome_product =
- installer_state.FindProduct(BrowserDistribution::CHROME_BROWSER);
// Creates shortcuts for Chrome.
- if (chrome_product) {
- BrowserDistribution* chrome_dist = chrome_product->distribution();
- const base::FilePath chrome_exe(
- installer_state.target_path().Append(kChromeExe));
-
- // Install per-user shortcuts on user-level installs and all-users
- // shortcuts on system-level installs. Note that Active Setup will take
- // care of installing missing per-user shortcuts on system-level install
- // (i.e., quick launch, taskbar pin, and possibly deleted all-users
- // shortcuts).
- InstallShortcutLevel install_level = installer_state.system_install() ?
- ALL_USERS : CURRENT_USER;
-
- InstallShortcutOperation install_operation =
- INSTALL_SHORTCUT_REPLACE_EXISTING;
- if (result == installer::FIRST_INSTALL_SUCCESS ||
- result == installer::INSTALL_REPAIRED ||
- !original_state.GetProductState(installer_state.system_install(),
- chrome_dist->GetType())) {
- // Always create the shortcuts on a new install, a repair install, and
- // when the Chrome product is being added to the current install.
- install_operation = INSTALL_SHORTCUT_CREATE_ALL;
- }
-
- CreateOrUpdateShortcuts(chrome_exe, *chrome_product, prefs, install_level,
- install_operation);
+ const Product& chrome_product = installer_state.product();
+ BrowserDistribution* chrome_dist = chrome_product.distribution();
+ const base::FilePath chrome_exe(
+ installer_state.target_path().Append(kChromeExe));
+
+ // Install per-user shortcuts on user-level installs and all-users shortcuts
+ // on system-level installs. Note that Active Setup will take care of
+ // installing missing per-user shortcuts on system-level install (i.e.,
+ // quick launch, taskbar pin, and possibly deleted all-users shortcuts).
+ InstallShortcutLevel install_level =
+ installer_state.system_install() ? ALL_USERS : CURRENT_USER;
+
+ InstallShortcutOperation install_operation =
+ INSTALL_SHORTCUT_REPLACE_EXISTING;
+ if (result == installer::FIRST_INSTALL_SUCCESS ||
+ result == installer::INSTALL_REPAIRED ||
+ !original_state.GetProductState(installer_state.system_install(),
+ chrome_dist->GetType())) {
+ // Always create the shortcuts on a new install, a repair install, and
+ // when the Chrome product is being added to the current install.
+ install_operation = INSTALL_SHORTCUT_CREATE_ALL;
+ }
+
+ CreateOrUpdateShortcuts(chrome_exe, chrome_product, prefs, install_level,
+ install_operation);
+
+ // Register Chrome and, if requested, make Chrome the default browser.
+ installer_state.SetStage(REGISTERING_CHROME);
+
+ bool make_chrome_default = false;
+ prefs.GetBool(master_preferences::kMakeChromeDefault, &make_chrome_default);
+
+ // If this is not the user's first Chrome install, but they have chosen
+ // Chrome to become their default browser on the download page, we must
+ // force it here because the master_preferences file will not get copied
+ // into the build.
+ bool force_chrome_default_for_user = false;
+ if (result == NEW_VERSION_UPDATED || result == INSTALL_REPAIRED ||
+ result == OLD_VERSION_DOWNGRADE || result == IN_USE_DOWNGRADE) {
+ prefs.GetBool(master_preferences::kMakeChromeDefaultForUser,
+ &force_chrome_default_for_user);
}
- if (chrome_product) {
- // Register Chrome and, if requested, make Chrome the default browser.
- installer_state.SetStage(REGISTERING_CHROME);
-
- bool make_chrome_default = false;
- prefs.GetBool(master_preferences::kMakeChromeDefault,
- &make_chrome_default);
-
- // If this is not the user's first Chrome install, but they have chosen
- // Chrome to become their default browser on the download page, we must
- // force it here because the master_preferences file will not get copied
- // into the build.
- bool force_chrome_default_for_user = false;
- if (result == NEW_VERSION_UPDATED || result == INSTALL_REPAIRED ||
- result == OLD_VERSION_DOWNGRADE || result == IN_USE_DOWNGRADE) {
- prefs.GetBool(master_preferences::kMakeChromeDefaultForUser,
- &force_chrome_default_for_user);
- }
-
- RegisterChromeOnMachine(
- installer_state, *chrome_product,
- make_chrome_default || force_chrome_default_for_user, new_version);
-
- if (!installer_state.system_install()) {
- DCHECK_EQ(chrome_product->distribution(),
- BrowserDistribution::GetDistribution());
- UpdateDefaultBrowserBeaconForPath(
- installer_state.target_path().Append(installer::kChromeExe));
- }
+ RegisterChromeOnMachine(
+ installer_state, chrome_product,
+ make_chrome_default || force_chrome_default_for_user, new_version);
+
+ if (!installer_state.system_install()) {
+ DCHECK_EQ(chrome_product.distribution(),
+ BrowserDistribution::GetDistribution());
+ UpdateDefaultBrowserBeaconForPath(
+ installer_state.target_path().Append(installer::kChromeExe));
}
// Delete files that belong to old versions of Chrome. If that fails during
@@ -600,17 +582,8 @@ InstallStatus InstallOrUpdateProduct(
void LaunchDeleteOldVersionsProcess(const base::FilePath& setup_path,
const InstallerState& installer_state) {
- // Deleting old versions is relevant if multi-install binaries are being
- // updated or if single-install Chrome is.
- const Product* product =
- installer_state.FindProduct(BrowserDistribution::CHROME_BINARIES);
- if (!product)
- product = installer_state.FindProduct(BrowserDistribution::CHROME_BROWSER);
- if (!product)
- return;
-
base::CommandLine command_line(setup_path);
- product->AppendProductFlags(&command_line);
+ installer_state.product().AppendProductFlags(&command_line);
command_line.AppendSwitch(switches::kDeleteOldVersions);
if (installer_state.system_install())
@@ -636,8 +609,6 @@ void LaunchDeleteOldVersionsProcess(const base::FilePath& setup_path,
void HandleOsUpgradeForBrowser(const installer::InstallerState& installer_state,
const installer::Product& chrome,
const base::Version& installed_version) {
- DCHECK(chrome.is_chrome());
-
VLOG(1) << "Updating and registering shortcuts for --on-os-upgrade.";
// Read master_preferences copied beside chrome.exe at install.
@@ -700,8 +671,6 @@ void HandleOsUpgradeForBrowser(const installer::InstallerState& installer_state,
void HandleActiveSetupForBrowser(const base::FilePath& installation_root,
const installer::Product& chrome,
bool force) {
- DCHECK(chrome.is_chrome());
-
std::unique_ptr<WorkItemList> cleanup_list(WorkItem::CreateWorkItemList());
cleanup_list->set_log_message("Cleanup deprecated per-user registrations");
cleanup_list->set_rollback_enabled(false);
« no previous file with comments | « chrome/installer/setup/install.h ('k') | chrome/installer/setup/install_worker.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698