| OLD | NEW |
| 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 <oaidl.h> | 10 #include <oaidl.h> |
| (...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 43 #include "chrome/installer/util/l10n_string_util.h" | 43 #include "chrome/installer/util/l10n_string_util.h" |
| 44 #include "chrome/installer/util/product.h" | 44 #include "chrome/installer/util/product.h" |
| 45 #include "chrome/installer/util/set_reg_value_work_item.h" | 45 #include "chrome/installer/util/set_reg_value_work_item.h" |
| 46 #include "chrome/installer/util/shell_util.h" | 46 #include "chrome/installer/util/shell_util.h" |
| 47 #include "chrome/installer/util/util_constants.h" | 47 #include "chrome/installer/util/util_constants.h" |
| 48 #include "chrome/installer/util/work_item_list.h" | 48 #include "chrome/installer/util/work_item_list.h" |
| 49 #include "chrome_frame/chrome_tab.h" | 49 #include "chrome_frame/chrome_tab.h" |
| 50 | 50 |
| 51 using base::win::RegKey; | 51 using base::win::RegKey; |
| 52 | 52 |
| 53 namespace { |
| 54 |
| 55 // The version identifying the work done by setup.exe --configure-user-settings |
| 56 // on user login by way of Active Setup. Increase this value if the work done |
| 57 // in setup_main.cc's handling of kConfigureUserSettings changes and should be |
| 58 // executed again for all users. |
| 59 const wchar_t kActiveSetupVersion[] = L"23,0,0,0"; |
| 60 |
| 61 } // namespace |
| 62 |
| 53 namespace installer { | 63 namespace installer { |
| 54 | 64 |
| 55 // Local helper to call AddRegisterComDllWorkItems for all DLLs in a set of | 65 // Local helper to call AddRegisterComDllWorkItems for all DLLs in a set of |
| 56 // products managed by a given package. | 66 // products managed by a given package. |
| 57 void AddRegisterComDllWorkItemsForPackage(const InstallerState& installer_state, | 67 void AddRegisterComDllWorkItemsForPackage(const InstallerState& installer_state, |
| 58 const Version* old_version, | 68 const Version* old_version, |
| 59 const Version& new_version, | 69 const Version& new_version, |
| 60 WorkItemList* work_item_list) { | 70 WorkItemList* work_item_list) { |
| 61 // First collect the list of DLLs to be registered from each product. | 71 // First collect the list of DLLs to be registered from each product. |
| 62 std::vector<FilePath> com_dll_list; | 72 std::vector<FilePath> com_dll_list; |
| (...skipping 847 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 910 | 920 |
| 911 AddUninstallShortcutWorkItems(installer_state, setup_path, new_version, | 921 AddUninstallShortcutWorkItems(installer_state, setup_path, new_version, |
| 912 install_list, *product); | 922 install_list, *product); |
| 913 | 923 |
| 914 AddVersionKeyWorkItems(root, product->distribution(), new_version, | 924 AddVersionKeyWorkItems(root, product->distribution(), new_version, |
| 915 add_language_identifier, install_list); | 925 add_language_identifier, install_list); |
| 916 | 926 |
| 917 AddDelegateExecuteWorkItems(installer_state, src_path, new_version, | 927 AddDelegateExecuteWorkItems(installer_state, src_path, new_version, |
| 918 *product, install_list); | 928 *product, install_list); |
| 919 | 929 |
| 920 // TODO(gab): This is only disabled for M22 as the shortcut CL using Active | 930 AddActiveSetupWorkItems(installer_state, setup_path, new_version, *product, |
| 921 // Setup will not make it in M22. | |
| 922 #if 0 | |
| 923 AddActiveSetupWorkItems(installer_state, new_version, *product, | |
| 924 install_list); | 931 install_list); |
| 925 #endif | |
| 926 } | 932 } |
| 927 | 933 |
| 928 // Add any remaining work items that involve special settings for | 934 // Add any remaining work items that involve special settings for |
| 929 // each product. | 935 // each product. |
| 930 AddProductSpecificWorkItems(original_state, installer_state, setup_path, | 936 AddProductSpecificWorkItems(original_state, installer_state, setup_path, |
| 931 new_version, install_list); | 937 new_version, install_list); |
| 932 | 938 |
| 933 // Copy over brand, usagestats, and other values. | 939 // Copy over brand, usagestats, and other values. |
| 934 AddGoogleUpdateWorkItems(original_state, installer_state, install_list); | 940 AddGoogleUpdateWorkItems(original_state, installer_state, install_list); |
| 935 | 941 |
| (...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1223 list->AddSetRegValueWorkItem(root, subkey, L"", command, true); | 1229 list->AddSetRegValueWorkItem(root, subkey, L"", command, true); |
| 1224 list->AddSetRegValueWorkItem(root, subkey, L"ServerExecutable", | 1230 list->AddSetRegValueWorkItem(root, subkey, L"ServerExecutable", |
| 1225 delegate_execute.value(), true); | 1231 delegate_execute.value(), true); |
| 1226 | 1232 |
| 1227 subkey.assign(delegate_execute_path).append(L"\\Programmable"); | 1233 subkey.assign(delegate_execute_path).append(L"\\Programmable"); |
| 1228 list->AddCreateRegKeyWorkItem(root, subkey); | 1234 list->AddCreateRegKeyWorkItem(root, subkey); |
| 1229 } | 1235 } |
| 1230 } | 1236 } |
| 1231 | 1237 |
| 1232 void AddActiveSetupWorkItems(const InstallerState& installer_state, | 1238 void AddActiveSetupWorkItems(const InstallerState& installer_state, |
| 1239 const FilePath& setup_path, |
| 1233 const Version& new_version, | 1240 const Version& new_version, |
| 1234 const Product& product, | 1241 const Product& product, |
| 1235 WorkItemList* list) { | 1242 WorkItemList* list) { |
| 1236 DCHECK(installer_state.operation() != InstallerState::UNINSTALL); | 1243 DCHECK(installer_state.operation() != InstallerState::UNINSTALL); |
| 1237 BrowserDistribution* distribution = product.distribution(); | 1244 BrowserDistribution* distribution = product.distribution(); |
| 1238 | 1245 |
| 1239 if (!product.is_chrome() || !installer_state.system_install()) { | 1246 if (!product.is_chrome() || !installer_state.system_install()) { |
| 1240 const char* install_level = | 1247 const char* install_level = |
| 1241 installer_state.system_install() ? "system" : "user"; | 1248 installer_state.system_install() ? "system" : "user"; |
| 1242 VLOG(1) << "No Active Setup processing to do for " << install_level | 1249 VLOG(1) << "No Active Setup processing to do for " << install_level |
| 1243 << "-level " << distribution->GetAppShortCutName(); | 1250 << "-level " << distribution->GetAppShortCutName(); |
| 1244 return; | 1251 return; |
| 1245 } | 1252 } |
| 1246 | 1253 |
| 1247 const HKEY root = HKEY_LOCAL_MACHINE; | 1254 const HKEY root = HKEY_LOCAL_MACHINE; |
| 1248 const string16 active_setup_path(GetActiveSetupPath(distribution)); | 1255 const string16 active_setup_path(GetActiveSetupPath(distribution)); |
| 1249 | 1256 |
| 1250 VLOG(1) << "Adding registration items for Active Setup."; | 1257 VLOG(1) << "Adding registration items for Active Setup."; |
| 1251 list->AddCreateRegKeyWorkItem(root, active_setup_path); | 1258 list->AddCreateRegKeyWorkItem(root, active_setup_path); |
| 1252 list->AddSetRegValueWorkItem(root, active_setup_path, L"", | 1259 list->AddSetRegValueWorkItem(root, active_setup_path, L"", |
| 1253 distribution->GetAppShortCutName(), true); | 1260 distribution->GetAppShortCutName(), true); |
| 1254 | 1261 |
| 1255 CommandLine cmd(installer_state.GetInstallerDirectory(new_version). | 1262 CommandLine cmd(installer_state.GetInstallerDirectory(new_version). |
| 1256 Append(installer::kSetupExe)); | 1263 Append(setup_path.BaseName())); |
| 1257 cmd.AppendSwitch(installer::switches::kConfigureUserSettings); | 1264 cmd.AppendSwitch(installer::switches::kConfigureUserSettings); |
| 1258 cmd.AppendSwitch(installer::switches::kVerboseLogging); | 1265 cmd.AppendSwitch(installer::switches::kVerboseLogging); |
| 1266 cmd.AppendSwitch(installer::switches::kSystemLevel); |
| 1267 product.AppendProductFlags(&cmd); |
| 1259 list->AddSetRegValueWorkItem(root, active_setup_path, L"StubPath", | 1268 list->AddSetRegValueWorkItem(root, active_setup_path, L"StubPath", |
| 1260 cmd.GetCommandLineString(), true); | 1269 cmd.GetCommandLineString(), true); |
| 1261 | 1270 |
| 1262 // TODO(grt): http://crbug.com/75152 Write a reference to a localized | 1271 // TODO(grt): http://crbug.com/75152 Write a reference to a localized |
| 1263 // resource. | 1272 // resource. |
| 1264 list->AddSetRegValueWorkItem(root, active_setup_path, L"Localized Name", | 1273 list->AddSetRegValueWorkItem(root, active_setup_path, L"Localized Name", |
| 1265 distribution->GetAppShortCutName(), true); | 1274 distribution->GetAppShortCutName(), true); |
| 1266 | 1275 |
| 1267 list->AddSetRegValueWorkItem(root, active_setup_path, L"IsInstalled", | 1276 list->AddSetRegValueWorkItem(root, active_setup_path, L"IsInstalled", |
| 1268 static_cast<DWORD>(1U), true); | 1277 static_cast<DWORD>(1U), true); |
| 1269 | 1278 |
| 1270 string16 comma_separated_version(ASCIIToUTF16(new_version.GetString())); | |
| 1271 ReplaceChars(comma_separated_version, L".", L",", &comma_separated_version); | |
| 1272 list->AddSetRegValueWorkItem(root, active_setup_path, L"Version", | 1279 list->AddSetRegValueWorkItem(root, active_setup_path, L"Version", |
| 1273 comma_separated_version, true); | 1280 kActiveSetupVersion, true); |
| 1274 } | 1281 } |
| 1275 | 1282 |
| 1276 namespace { | 1283 namespace { |
| 1277 | 1284 |
| 1278 enum ElevationPolicyId { | 1285 enum ElevationPolicyId { |
| 1279 CURRENT_ELEVATION_POLICY, | 1286 CURRENT_ELEVATION_POLICY, |
| 1280 OLD_ELEVATION_POLICY, | 1287 OLD_ELEVATION_POLICY, |
| 1281 }; | 1288 }; |
| 1282 | 1289 |
| 1283 // Although the UUID of the ChromeFrame class is used for the "current" value, | 1290 // Although the UUID of the ChromeFrame class is used for the "current" value, |
| (...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1618 AppCommand cmd(cmd_line.GetCommandLineString()); | 1625 AppCommand cmd(cmd_line.GetCommandLineString()); |
| 1619 cmd.set_is_auto_run_on_os_upgrade(true); | 1626 cmd.set_is_auto_run_on_os_upgrade(true); |
| 1620 cmd.AddWorkItems(installer_state.root_key(), cmd_key, install_list); | 1627 cmd.AddWorkItems(installer_state.root_key(), cmd_key, install_list); |
| 1621 } else { | 1628 } else { |
| 1622 install_list->AddDeleteRegKeyWorkItem(root_key, cmd_key) | 1629 install_list->AddDeleteRegKeyWorkItem(root_key, cmd_key) |
| 1623 ->set_log_message("Removing OS upgrade command"); | 1630 ->set_log_message("Removing OS upgrade command"); |
| 1624 } | 1631 } |
| 1625 } | 1632 } |
| 1626 | 1633 |
| 1627 } // namespace installer | 1634 } // namespace installer |
| OLD | NEW |