| 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..deef6aa5521ddb334e8a8ef073576d43ea64282c 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);
|
| delete_reg_key->set_ignore_failure(true);
|
|
|
| // Then attempt to delete the old installation's start menu shortcut.
|
| @@ -611,9 +611,10 @@ void AddUninstallDelegateExecuteWorkItems(
|
| WorkItemList* list) {
|
| VLOG(1) << "Adding unregistration items for DelegateExecute verb handler in "
|
| << root;
|
| - list->AddDeleteRegKeyWorkItem(root,
|
| - delegate_execute_path,
|
| - WorkItem::kWow64Default);
|
| + // Delete both 64 and 32 keys to handle 32->64 or 64->32 migration.
|
| + list->AddDeleteRegKeyWorkItem(root, delegate_execute_path, 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
|
| @@ -621,7 +622,7 @@ void AddUninstallDelegateExecuteWorkItems(
|
| list->AddDeleteRegKeyWorkItem(root,
|
| L"Software\\Classes\\Interface\\"
|
| L"{0BA0D4E9-2259-4963-B9AE-A839F7CB7544}",
|
| - WorkItem::kWow64Default);
|
| + KEY_WOW64_32KEY);
|
| list->AddDeleteRegKeyWorkItem(root,
|
| L"Software\\Classes\\TypeLib\\"
|
| #if defined(GOOGLE_CHROME_BUILD)
|
| @@ -629,7 +630,7 @@ void AddUninstallDelegateExecuteWorkItems(
|
| #else
|
| L"{7779FB70-B399-454A-AA1A-BAA850032B10}",
|
| #endif
|
| - WorkItem::kWow64Default);
|
| + KEY_WOW64_32KEY);
|
| }
|
|
|
| // Google Chrome Canary, between 20.0.1101.0 (crrev.com/132190) and 20.0.1106.0
|
| @@ -699,17 +700,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 +724,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);
|
| 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 +751,46 @@ 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);
|
| + // TODO(wfh): Ensure that this value is preserved in the 64-bit hive when
|
| + // 64-bit installs place the uninstall information into the 64-bit registry.
|
| install_list->AddSetRegValueWorkItem(reg_root,
|
| uninstall_reg,
|
| - WorkItem::kWow64Default,
|
| + KEY_WOW64_32KEY,
|
| L"InstallDate",
|
| InstallUtil::GetCurrentDate(),
|
| false);
|
| @@ -798,14 +801,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 +826,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 +850,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 +900,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 +913,7 @@ void AddOemInstallWorkItems(const InstallationState& original_state,
|
| install_list->AddDeleteRegValueWorkItem(
|
| root_key,
|
| multi_key,
|
| - WorkItem::kWow64Default,
|
| + KEY_WOW64_32KEY,
|
| google_update::kRegOemInstallField);
|
| }
|
| }
|
| @@ -959,10 +962,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 +974,7 @@ void AddEulaAcceptedWorkItems(const InstallationState& original_state,
|
| install_list->AddDeleteRegValueWorkItem(
|
| root_key,
|
| multi_key,
|
| - WorkItem::kWow64Default,
|
| + KEY_WOW64_32KEY,
|
| google_update::kRegEULAAceptedField);
|
| }
|
| }
|
| @@ -999,8 +1002,9 @@ void AddGoogleUpdateWorkItems(const InstallationState& original_state,
|
| install_list->AddCreateRegKeyWorkItem(
|
| root_key,
|
| installer_state.multi_package_binaries_distribution()
|
| - ->GetStateMediumKey().c_str(),
|
| - WorkItem::kWow64Default);
|
| + ->GetStateMediumKey()
|
| + .c_str(),
|
| + KEY_WOW64_32KEY);
|
| }
|
|
|
| // Creating the ClientState key for binaries, if we're migrating to multi then
|
| @@ -1013,12 +1017,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);
|
| @@ -1061,13 +1065,12 @@ void AddUsageStatsWorkItems(const InstallationState& original_state,
|
| if (value_found) {
|
| base::string16 state_key(
|
| installer_state.multi_package_binaries_distribution()->GetStateKey());
|
| - install_list->AddCreateRegKeyWorkItem(
|
| - root_key, state_key, WorkItem::kWow64Default);
|
| + install_list->AddCreateRegKeyWorkItem(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 +1084,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 +1151,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 +1160,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 +1168,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 +1183,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 +1207,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 +1382,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);
|
| @@ -1588,8 +1591,7 @@ void AddOsUpgradeWorkItems(const InstallerState& installer_state,
|
| GetRegCommandKey(product.distribution(), kCmdOnOsUpgrade));
|
|
|
| if (installer_state.operation() == InstallerState::UNINSTALL) {
|
| - install_list->AddDeleteRegKeyWorkItem(
|
| - root_key, cmd_key, WorkItem::kWow64Default)
|
| + install_list->AddDeleteRegKeyWorkItem(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
|
| @@ -1621,9 +1623,8 @@ void AddQueryEULAAcceptanceWorkItems(const InstallerState& installer_state,
|
| base::string16 cmd_key(
|
| GetRegCommandKey(product.distribution(), kCmdQueryEULAAcceptance));
|
| if (installer_state.operation() == InstallerState::UNINSTALL) {
|
| - work_item_list->AddDeleteRegKeyWorkItem(
|
| - root_key, cmd_key, WorkItem::kWow64Default)
|
| - ->set_log_message("Removing query EULA acceptance command");
|
| + work_item_list->AddDeleteRegKeyWorkItem(root_key, cmd_key, KEY_WOW64_32KEY)
|
| + ->set_log_message("Removing query EULA acceptance command");
|
| } else {
|
| CommandLine cmd_line(installer_state
|
| .GetInstallerDirectory(new_version)
|
| @@ -1653,9 +1654,9 @@ 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)
|
| - ->set_log_message("removing " +
|
| - base::UTF16ToASCII(kCmdQuickEnableCf) + " command");
|
| + installer_state.root_key(), cmd_key, KEY_WOW64_32KEY)
|
| + ->set_log_message("removing " + base::UTF16ToASCII(kCmdQuickEnableCf) +
|
| + " command");
|
| }
|
|
|
| } // namespace installer
|
|
|