Chromium Code Reviews| Index: chrome/installer/setup/install_worker.cc |
| diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc |
| index b8bab9bef0e3b286f89d1395cbb669e6f78c83e1..86d722ddcea0ebb10f321269a4ef6d299a7d7a55 100644 |
| --- a/chrome/installer/setup/install_worker.cc |
| +++ b/chrome/installer/setup/install_worker.cc |
| @@ -216,7 +216,7 @@ void AddCommandWithParameterWorkItems(const InstallerState& installer_state, |
| if (installer_state.operation() == InstallerState::UNINSTALL) { |
| work_item_list->AddDeleteRegKeyWorkItem(installer_state.root_key(), |
| full_cmd_key, |
| - WorkItem::kWow64Default) |
| + KEY_WOW64_32KEY) |
| ->set_log_message("removing " + base::UTF16ToASCII(command_key) + |
| " command"); |
| } else { |
| @@ -442,7 +442,7 @@ void AddDeleteUninstallShortcutsForMSIWorkItems( |
| base::string16 uninstall_reg(product.distribution()->GetUninstallRegPath()); |
| WorkItem* delete_reg_key = work_item_list->AddDeleteRegKeyWorkItem( |
| - reg_root, uninstall_reg, WorkItem::kWow64Default); |
| + reg_root, uninstall_reg, KEY_WOW64_32KEY); |
|
grt (UTC plus 2)
2014/05/27 16:42:08
as with my comment on line 734, i think this shoul
|
| delete_reg_key->set_ignore_failure(true); |
| // Then attempt to delete the old installation's start menu shortcut. |
| @@ -611,9 +611,17 @@ void AddUninstallDelegateExecuteWorkItems( |
| WorkItemList* list) { |
| VLOG(1) << "Adding unregistration items for DelegateExecute verb handler in " |
| << root; |
| + // Delete both 64 and 32 keys to clean up from previous installs which placed |
| + // the delegate registration key in the wrong hive. |
|
grt (UTC plus 2)
2014/05/27 16:42:08
"in the wrong hive" makes it sound like previous i
Will Harris
2014/05/27 19:25:10
Done.
|
| + // See http://crbug.com/348626. |
| list->AddDeleteRegKeyWorkItem(root, |
| delegate_execute_path, |
| - WorkItem::kWow64Default); |
| + KEY_WOW64_32KEY); |
| + |
| + list->AddDeleteRegKeyWorkItem(root, |
| + delegate_execute_path, |
| + KEY_WOW64_64KEY); |
| + |
| // In the past, the ICommandExecuteImpl interface and a TypeLib were both |
| // registered. Remove these since this operation may be updating a machine |
| @@ -699,17 +707,17 @@ void AddUninstallShortcutWorkItems(const InstallerState& installer_state, |
| base::string16 update_state_key(browser_dist->GetStateKey()); |
| install_list->AddCreateRegKeyWorkItem( |
| - reg_root, update_state_key, WorkItem::kWow64Default); |
| + reg_root, update_state_key, KEY_WOW64_32KEY); |
| install_list->AddSetRegValueWorkItem(reg_root, |
| update_state_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| installer::kUninstallStringField, |
| installer_path.value(), |
| true); |
| install_list->AddSetRegValueWorkItem( |
| reg_root, |
| update_state_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| installer::kUninstallArgumentsField, |
| uninstall_arguments.GetCommandLineString(), |
| true); |
| @@ -723,23 +731,23 @@ void AddUninstallShortcutWorkItems(const InstallerState& installer_state, |
| base::string16 uninstall_reg = browser_dist->GetUninstallRegPath(); |
| install_list->AddCreateRegKeyWorkItem( |
| - reg_root, uninstall_reg, WorkItem::kWow64Default); |
| + reg_root, uninstall_reg, KEY_WOW64_32KEY); |
|
grt (UTC plus 2)
2014/05/27 16:42:08
why force the add/remove control panel data into t
Will Harris
2014/05/27 19:25:10
as discussed, while we're leaving Chrome in C:\Pro
grt (UTC plus 2)
2014/05/27 22:06:19
SGTM
|
| install_list->AddSetRegValueWorkItem(reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| installer::kUninstallDisplayNameField, |
| browser_dist->GetDisplayName(), |
| true); |
| install_list->AddSetRegValueWorkItem( |
| reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| installer::kUninstallStringField, |
| quoted_uninstall_cmd.GetCommandLineString(), |
| true); |
| install_list->AddSetRegValueWorkItem(reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"InstallLocation", |
| install_path.value(), |
| true); |
| @@ -750,44 +758,44 @@ void AddUninstallShortcutWorkItems(const InstallerState& installer_state, |
| dist->GetIconIndex(BrowserDistribution::SHORTCUT_CHROME)); |
| install_list->AddSetRegValueWorkItem(reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"DisplayIcon", |
| chrome_icon, |
| true); |
| install_list->AddSetRegValueWorkItem(reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"NoModify", |
| static_cast<DWORD>(1), |
| true); |
| install_list->AddSetRegValueWorkItem(reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"NoRepair", |
| static_cast<DWORD>(1), |
| true); |
| install_list->AddSetRegValueWorkItem(reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"Publisher", |
| browser_dist->GetPublisherName(), |
| true); |
| install_list->AddSetRegValueWorkItem(reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"Version", |
| ASCIIToWide(new_version.GetString()), |
| true); |
| install_list->AddSetRegValueWorkItem(reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"DisplayVersion", |
| ASCIIToWide(new_version.GetString()), |
| true); |
| install_list->AddSetRegValueWorkItem(reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"InstallDate", |
| InstallUtil::GetCurrentDate(), |
| false); |
|
grt (UTC plus 2)
2014/05/27 16:42:08
it'd be nice to preserve the InstallDate when migr
Will Harris
2014/05/27 19:25:10
pretty sure this code does preserve, since it's on
grt (UTC plus 2)
2014/05/27 22:06:19
i was referring to the (future) case where the uni
Will Harris
2014/05/27 22:29:28
Put a TODO so I don't forget to do this.
|
| @@ -798,14 +806,14 @@ void AddUninstallShortcutWorkItems(const InstallerState& installer_state, |
| install_list->AddSetRegValueWorkItem( |
| reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"VersionMajor", |
| static_cast<DWORD>(version_components[2]), |
| true); |
| install_list->AddSetRegValueWorkItem( |
| reg_root, |
| uninstall_reg, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| L"VersionMinor", |
| static_cast<DWORD>(version_components[3]), |
| true); |
| @@ -823,18 +831,18 @@ void AddVersionKeyWorkItems(HKEY root, |
| // Create Version key for each distribution (if not already present) and set |
| // the new product version as the last step. |
| base::string16 version_key(dist->GetVersionKey()); |
| - list->AddCreateRegKeyWorkItem(root, version_key, WorkItem::kWow64Default); |
| + list->AddCreateRegKeyWorkItem(root, version_key, KEY_WOW64_32KEY); |
| base::string16 product_name(dist->GetDisplayName()); |
| list->AddSetRegValueWorkItem(root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegNameField, |
| product_name, |
| true); // overwrite name also |
| list->AddSetRegValueWorkItem(root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegOopcrashesField, |
| static_cast<DWORD>(1), |
| false); // set during first install |
| @@ -847,14 +855,14 @@ void AddVersionKeyWorkItems(HKEY root, |
| language.resize(2); |
| list->AddSetRegValueWorkItem(root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegLangField, |
| language, |
| false); // do not overwrite language |
| } |
| list->AddSetRegValueWorkItem(root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegVersionField, |
| ASCIIToWide(new_version.GetString()), |
| true); // overwrite version |
| @@ -897,11 +905,11 @@ void AddOemInstallWorkItems(const InstallationState& original_state, |
| << BrowserDistribution::GetSpecificDistribution(source_type)-> |
| GetDisplayName(); |
| install_list->AddCreateRegKeyWorkItem( |
| - root_key, multi_key, WorkItem::kWow64Default); |
| + root_key, multi_key, KEY_WOW64_32KEY); |
| // Always overwrite an old value. |
| install_list->AddSetRegValueWorkItem(root_key, |
| multi_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegOemInstallField, |
| oem_install, |
| true); |
| @@ -910,7 +918,7 @@ void AddOemInstallWorkItems(const InstallationState& original_state, |
| install_list->AddDeleteRegValueWorkItem( |
| root_key, |
| multi_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegOemInstallField); |
| } |
| } |
| @@ -959,10 +967,10 @@ void AddEulaAcceptedWorkItems(const InstallationState& original_state, |
| << BrowserDistribution::GetSpecificDistribution(product_type)-> |
| GetDisplayName(); |
| install_list->AddCreateRegKeyWorkItem( |
| - root_key, multi_key, WorkItem::kWow64Default); |
| + root_key, multi_key, KEY_WOW64_32KEY); |
| install_list->AddSetRegValueWorkItem(root_key, |
| multi_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegEULAAceptedField, |
| eula_accepted, |
| true); |
| @@ -971,7 +979,7 @@ void AddEulaAcceptedWorkItems(const InstallationState& original_state, |
| install_list->AddDeleteRegValueWorkItem( |
| root_key, |
| multi_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegEULAAceptedField); |
| } |
| } |
| @@ -1000,7 +1008,7 @@ void AddGoogleUpdateWorkItems(const InstallationState& original_state, |
| root_key, |
| installer_state.multi_package_binaries_distribution() |
| ->GetStateMediumKey().c_str(), |
| - WorkItem::kWow64Default); |
| + KEY_WOW64_32KEY); |
| } |
| // Creating the ClientState key for binaries, if we're migrating to multi then |
| @@ -1013,12 +1021,12 @@ void AddGoogleUpdateWorkItems(const InstallationState& original_state, |
| const base::string16& brand(chrome_product_state->brand()); |
| if (!brand.empty()) { |
| install_list->AddCreateRegKeyWorkItem( |
| - root_key, multi_key, WorkItem::kWow64Default); |
| + root_key, multi_key, KEY_WOW64_32KEY); |
| // Write Chrome's brand code to the multi key. Never overwrite the value |
| // if one is already present (although this shouldn't happen). |
| install_list->AddSetRegValueWorkItem(root_key, |
| multi_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegBrandField, |
| brand, |
| false); |
| @@ -1062,12 +1070,12 @@ void AddUsageStatsWorkItems(const InstallationState& original_state, |
| base::string16 state_key( |
| installer_state.multi_package_binaries_distribution()->GetStateKey()); |
| install_list->AddCreateRegKeyWorkItem( |
| - root_key, state_key, WorkItem::kWow64Default); |
| + root_key, state_key, KEY_WOW64_32KEY); |
| // Overwrite any existing value so that overinstalls (where Omaha writes a |
| // new value into a product's state key) pick up the correct value. |
| install_list->AddSetRegValueWorkItem(root_key, |
| state_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegUsageStatsField, |
| usagestats, |
| true); |
| @@ -1081,20 +1089,20 @@ void AddUsageStatsWorkItems(const InstallationState& original_state, |
| install_list->AddDeleteRegValueWorkItem( |
| root_key, |
| dist->GetStateMediumKey(), |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegUsageStatsField); |
| // Previous versions of Chrome also wrote a value in HKCU even for |
| // system-level installs, so clean that up. |
| install_list->AddDeleteRegValueWorkItem( |
| HKEY_CURRENT_USER, |
| dist->GetStateKey(), |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegUsageStatsField); |
| } |
| install_list->AddDeleteRegValueWorkItem( |
| root_key, |
| dist->GetStateKey(), |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegUsageStatsField); |
| } |
| } |
| @@ -1148,7 +1156,7 @@ bool AppendPostInstallTasks(const InstallerState& installer_state, |
| in_use_update_work_items->AddSetRegValueWorkItem( |
| root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegOldVersionField, |
| ASCIIToWide(current_version->GetString()), |
| true); |
| @@ -1157,7 +1165,7 @@ bool AppendPostInstallTasks(const InstallerState& installer_state, |
| in_use_update_work_items->AddSetRegValueWorkItem( |
| root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegCriticalVersionField, |
| ASCIIToWide(critical_version.GetString()), |
| true); |
| @@ -1165,7 +1173,7 @@ bool AppendPostInstallTasks(const InstallerState& installer_state, |
| in_use_update_work_items->AddDeleteRegValueWorkItem( |
| root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegCriticalVersionField); |
| } |
| @@ -1180,7 +1188,7 @@ bool AppendPostInstallTasks(const InstallerState& installer_state, |
| in_use_update_work_items->AddSetRegValueWorkItem( |
| root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegRenameCmdField, |
| product_rename_cmd.GetCommandLineString(), |
| true); |
| @@ -1204,17 +1212,17 @@ bool AppendPostInstallTasks(const InstallerState& installer_state, |
| regular_update_work_items->AddDeleteRegValueWorkItem( |
| root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegOldVersionField); |
| regular_update_work_items->AddDeleteRegValueWorkItem( |
| root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegCriticalVersionField); |
| regular_update_work_items->AddDeleteRegValueWorkItem( |
| root, |
| version_key, |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegRenameCmdField); |
| } |
| @@ -1379,7 +1387,7 @@ void AddSetMsiMarkerWorkItem(const InstallerState& installer_state, |
| WorkItem* set_msi_work_item = |
| work_item_list->AddSetRegValueWorkItem(installer_state.root_key(), |
| dist->GetStateKey(), |
| - WorkItem::kWow64Default, |
| + KEY_WOW64_32KEY, |
| google_update::kRegMSIField, |
| msi_value, |
| true); |
| @@ -1589,7 +1597,7 @@ void AddOsUpgradeWorkItems(const InstallerState& installer_state, |
| if (installer_state.operation() == InstallerState::UNINSTALL) { |
| install_list->AddDeleteRegKeyWorkItem( |
| - root_key, cmd_key, WorkItem::kWow64Default) |
| + root_key, cmd_key, KEY_WOW64_32KEY) |
| ->set_log_message("Removing OS upgrade command"); |
| } else { |
| // Register with Google Update to have setup.exe --on-os-upgrade called on |
| @@ -1622,7 +1630,7 @@ void AddQueryEULAAcceptanceWorkItems(const InstallerState& installer_state, |
| GetRegCommandKey(product.distribution(), kCmdQueryEULAAcceptance)); |
| if (installer_state.operation() == InstallerState::UNINSTALL) { |
| work_item_list->AddDeleteRegKeyWorkItem( |
| - root_key, cmd_key, WorkItem::kWow64Default) |
| + root_key, cmd_key, KEY_WOW64_32KEY) |
| ->set_log_message("Removing query EULA acceptance command"); |
| } else { |
| CommandLine cmd_line(installer_state |
| @@ -1653,7 +1661,7 @@ void AddQuickEnableChromeFrameWorkItems(const InstallerState& installer_state, |
| // Do this even if multi-install Chrome isn't installed to ensure that it is |
| // not left behind in any case. |
| work_item_list->AddDeleteRegKeyWorkItem( |
| - installer_state.root_key(), cmd_key, WorkItem::kWow64Default) |
| + installer_state.root_key(), cmd_key, KEY_WOW64_32KEY) |
| ->set_log_message("removing " + |
| base::UTF16ToASCII(kCmdQuickEnableCf) + " command"); |
| } |