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

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

Issue 2459583002: Use InstallDetails in setup. (Closed)
Patch Set: Created 4 years, 1 month 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
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 // This file contains the definitions of the installer functions that build 5 // This file contains the definitions of the installer functions that build
6 // the WorkItemList used to install the application. 6 // the WorkItemList used to install the application.
7 7
8 #include "chrome/installer/setup/install_worker.h" 8 #include "chrome/installer/setup/install_worker.h"
9 9
10 #include <windows.h> // NOLINT 10 #include <windows.h> // NOLINT
(...skipping 14 matching lines...) Expand all
25 #include "base/logging.h" 25 #include "base/logging.h"
26 #include "base/macros.h" 26 #include "base/macros.h"
27 #include "base/path_service.h" 27 #include "base/path_service.h"
28 #include "base/strings/string_util.h" 28 #include "base/strings/string_util.h"
29 #include "base/strings/utf_string_conversions.h" 29 #include "base/strings/utf_string_conversions.h"
30 #include "base/version.h" 30 #include "base/version.h"
31 #include "base/win/registry.h" 31 #include "base/win/registry.h"
32 #include "base/win/windows_version.h" 32 #include "base/win/windows_version.h"
33 #include "chrome/common/chrome_constants.h" 33 #include "chrome/common/chrome_constants.h"
34 #include "chrome/common/chrome_switches.h" 34 #include "chrome/common/chrome_switches.h"
35 #include "chrome/install_static/install_details.h"
35 #include "chrome/installer/setup/app_launcher_installer.h" 36 #include "chrome/installer/setup/app_launcher_installer.h"
37 #include "chrome/installer/setup/brand_constants.h"
36 #include "chrome/installer/setup/install.h" 38 #include "chrome/installer/setup/install.h"
37 #include "chrome/installer/setup/persistent_histogram_storage.h" 39 #include "chrome/installer/setup/persistent_histogram_storage.h"
38 #include "chrome/installer/setup/setup_constants.h" 40 #include "chrome/installer/setup/setup_constants.h"
39 #include "chrome/installer/setup/setup_util.h" 41 #include "chrome/installer/setup/setup_util.h"
40 #include "chrome/installer/setup/update_active_setup_version_work_item.h" 42 #include "chrome/installer/setup/update_active_setup_version_work_item.h"
41 #include "chrome/installer/util/app_registration_data.h" 43 #include "chrome/installer/util/app_registration_data.h"
42 #include "chrome/installer/util/browser_distribution.h" 44 #include "chrome/installer/util/browser_distribution.h"
43 #include "chrome/installer/util/callback_work_item.h" 45 #include "chrome/installer/util/callback_work_item.h"
44 #include "chrome/installer/util/conditional_work_item_list.h" 46 #include "chrome/installer/util/conditional_work_item_list.h"
45 #include "chrome/installer/util/create_reg_key_work_item.h" 47 #include "chrome/installer/util/create_reg_key_work_item.h"
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
238 for (Products::const_iterator it = products.begin(); it < products.end(); 240 for (Products::const_iterator it = products.begin(); it < products.end();
239 ++it) { 241 ++it) {
240 const Product& p = **it; 242 const Product& p = **it;
241 if (p.is_chrome()) { 243 if (p.is_chrome()) {
242 AddOsUpgradeWorkItems(installer_state, setup_path, new_version, p, 244 AddOsUpgradeWorkItems(installer_state, setup_path, new_version, p,
243 list); 245 list);
244 AddFirewallRulesWorkItems(installer_state, p.distribution(), 246 AddFirewallRulesWorkItems(installer_state, p.distribution(),
245 current_version == nullptr, list); 247 current_version == nullptr, list);
246 248
247 #if defined(GOOGLE_CHROME_BUILD) 249 #if defined(GOOGLE_CHROME_BUILD)
248 if (!InstallUtil::IsChromeSxSProcess()) { 250 if (GetBrandConstants().supported_app_launcher) {
249 // Remove the app launcher key as it has been deprecated. 251 // Remove the app launcher key as it has been deprecated.
250 RemoveAppLauncherVersionKey(installer_state.root_key()); 252 RemoveAppLauncherVersionKey(installer_state.root_key());
251 } 253 }
252 #endif // GOOGLE_CHROME_BUILD 254 #endif // GOOGLE_CHROME_BUILD
253 InstallUtil::AddUpdateDowngradeVersionItem( 255 InstallUtil::AddUpdateDowngradeVersionItem(
254 installer_state.system_install(), current_version, new_version, 256 installer_state.system_install(), current_version, new_version,
255 p.distribution(), list); 257 p.distribution(), list);
256 } 258 }
257 if (p.is_chrome_binaries()) 259 if (p.is_chrome_binaries())
258 AddQuickEnableChromeFrameWorkItems(installer_state, list); 260 AddQuickEnableChromeFrameWorkItems(installer_state, list);
(...skipping 618 matching lines...) Expand 10 before | Expand all | Expand 10 after
877 // Migrates the usagestats value from the binaries to Chrome when migrating 879 // Migrates the usagestats value from the binaries to Chrome when migrating
878 // multi-install Chrome to single-install. 880 // multi-install Chrome to single-install.
879 void AddMigrateUsageStatesWorkItems(const InstallationState& original_state, 881 void AddMigrateUsageStatesWorkItems(const InstallationState& original_state,
880 const InstallerState& installer_state, 882 const InstallerState& installer_state,
881 WorkItemList* install_list) { 883 WorkItemList* install_list) {
882 // Ensure that a non-multi install or update is being processed (i.e., 884 // Ensure that a non-multi install or update is being processed (i.e.,
883 // no "--multi-install" on the command line). 885 // no "--multi-install" on the command line).
884 if (installer_state.is_multi_install()) 886 if (installer_state.is_multi_install())
885 return; 887 return;
886 888
887 // This operation doesn't apply to SxS Chrome. 889 // This operation doesn't apply to modes that don't support multi-install.
888 if (InstallUtil::IsChromeSxSProcess()) 890 if (!install_static::InstallDetails::Get().supports_multi_install())
889 return; 891 return;
890 892
891 // Ensure that Chrome is the product being installed or updated (there are no 893 // Ensure that Chrome is the product being installed or updated (there are no
892 // other products, so it is especially unexpected for this to fail). 894 // other products, so it is especially unexpected for this to fail).
893 const Product* chrome_product = 895 const Product* chrome_product =
894 installer_state.FindProduct(BrowserDistribution::CHROME_BROWSER); 896 installer_state.FindProduct(BrowserDistribution::CHROME_BROWSER);
895 if (!chrome_product) { 897 if (!chrome_product) {
896 LOG(DFATAL) << "Not operating on Chrome while migrating to single-install."; 898 LOG(DFATAL) << "Not operating on Chrome while migrating to single-install.";
897 return; 899 return;
898 } 900 }
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
1120 archive_path, 1122 archive_path,
1121 src_path, 1123 src_path,
1122 temp_path, 1124 temp_path,
1123 current_version, 1125 current_version,
1124 new_version, 1126 new_version,
1125 install_list); 1127 install_list);
1126 } 1128 }
1127 1129
1128 #if defined(GOOGLE_CHROME_BUILD) 1130 #if defined(GOOGLE_CHROME_BUILD)
1129 // For Chrome, unconditionally remove the legacy app_host.exe. 1131 // For Chrome, unconditionally remove the legacy app_host.exe.
1130 if (!InstallUtil::IsChromeSxSProcess()) 1132 if (GetBrandConstants().supported_app_launcher)
1131 AddRemoveLegacyAppHostExeWorkItems(target_path, temp_path, install_list); 1133 AddRemoveLegacyAppHostExeWorkItems(target_path, temp_path, install_list);
1132 #endif // GOOGLE_CHROME_BUILD 1134 #endif // GOOGLE_CHROME_BUILD
1133 1135
1134 // Copy installer in install directory 1136 // Copy installer in install directory
1135 AddInstallerCopyTasks(installer_state, setup_path, archive_path, temp_path, 1137 AddInstallerCopyTasks(installer_state, setup_path, archive_path, temp_path,
1136 new_version, install_list); 1138 new_version, install_list);
1137 1139
1138 const HKEY root = installer_state.root_key(); 1140 const HKEY root = installer_state.root_key();
1139 // Only set "lang" for user-level installs since for system-level, the install 1141 // Only set "lang" for user-level installs since for system-level, the install
1140 // language may not be related to a given user's runtime language. 1142 // language may not be related to a given user's runtime language.
(...skipping 15 matching lines...) Expand all
1156 add_language_identifier, 1158 add_language_identifier,
1157 install_list); 1159 install_list);
1158 1160
1159 AddCleanupDelegateExecuteWorkItems(installer_state, product, install_list); 1161 AddCleanupDelegateExecuteWorkItems(installer_state, product, install_list);
1160 AddCleanupDeprecatedPerUserRegistrationsWorkItems(product, install_list); 1162 AddCleanupDeprecatedPerUserRegistrationsWorkItems(product, install_list);
1161 1163
1162 AddActiveSetupWorkItems(installer_state, new_version, product, 1164 AddActiveSetupWorkItems(installer_state, new_version, product,
1163 install_list); 1165 install_list);
1164 } 1166 }
1165 1167
1166 // Ensure that the Clients key for the binaries is gone for single installs 1168 // Ensure that the Clients key for the binaries is gone for single installs of
1167 // (but not for SxS Chrome). 1169 // multi-capable products.
1168 if (!installer_state.is_multi_install() && 1170 if (install_static::InstallDetails::Get().supports_multi_install() &&
1169 !InstallUtil::IsChromeSxSProcess()) { 1171 !installer_state.is_multi_install()) {
1170 BrowserDistribution* binaries_dist = 1172 BrowserDistribution* binaries_dist =
1171 BrowserDistribution::GetSpecificDistribution( 1173 BrowserDistribution::GetSpecificDistribution(
1172 BrowserDistribution::CHROME_BINARIES); 1174 BrowserDistribution::CHROME_BINARIES);
1173 install_list->AddDeleteRegKeyWorkItem(root, 1175 install_list->AddDeleteRegKeyWorkItem(root,
1174 binaries_dist->GetVersionKey(), 1176 binaries_dist->GetVersionKey(),
1175 KEY_WOW64_32KEY); 1177 KEY_WOW64_32KEY);
1176 } 1178 }
1177 1179
1178 #if defined(GOOGLE_CHROME_BUILD) 1180 #if defined(GOOGLE_CHROME_BUILD)
1179 if (!InstallUtil::IsChromeSxSProcess()) 1181 if (GetBrandConstants().supported_app_launcher)
robertshield 2016/11/04 12:50:35 I don't have a suggestion, more of an observation:
grt (UTC plus 2) 2016/11/08 13:02:13 I wouldn't object to resolving it now somehow. Her
robertshield 2016/11/08 22:03:40 Thought about this for a bit and I'm not sure if t
grt (UTC plus 2) 2016/11/10 15:18:03 Now is as good a time as any. WDYT?
1180 AddRemoveLegacyAppCommandsWorkItems(installer_state, install_list); 1182 AddRemoveLegacyAppCommandsWorkItems(installer_state, install_list);
1181 #endif // GOOGLE_CHROME_BUILD 1183 #endif // GOOGLE_CHROME_BUILD
1182 1184
1183 // Add any remaining work items that involve special settings for 1185 // Add any remaining work items that involve special settings for
1184 // each product. 1186 // each product.
1185 AddProductSpecificWorkItems(original_state, installer_state, setup_path, 1187 AddProductSpecificWorkItems(original_state, installer_state, setup_path,
1186 new_version, current_version, 1188 new_version, current_version,
1187 add_language_identifier, install_list); 1189 add_language_identifier, install_list);
1188 1190
1189 // Copy over brand, usagestats, and other values. 1191 // Copy over brand, usagestats, and other values.
(...skipping 223 matching lines...) Expand 10 before | Expand all | Expand 10 after
1413 // Unconditionally remove the legacy Quick Enable command from the binaries. 1415 // Unconditionally remove the legacy Quick Enable command from the binaries.
1414 // Do this even if multi-install Chrome isn't installed to ensure that it is 1416 // Do this even if multi-install Chrome isn't installed to ensure that it is
1415 // not left behind in any case. 1417 // not left behind in any case.
1416 work_item_list->AddDeleteRegKeyWorkItem( 1418 work_item_list->AddDeleteRegKeyWorkItem(
1417 installer_state.root_key(), cmd_key, KEY_WOW64_32KEY) 1419 installer_state.root_key(), cmd_key, KEY_WOW64_32KEY)
1418 ->set_log_message("removing " + base::UTF16ToASCII(kCmdQuickEnableCf) + 1420 ->set_log_message("removing " + base::UTF16ToASCII(kCmdQuickEnableCf) +
1419 " command"); 1421 " command");
1420 } 1422 }
1421 1423
1422 } // namespace installer 1424 } // namespace installer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698