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

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

Issue 300593002: Make omaha, gcapi and uninstall registry accesses use Wow6432Node on 64-bit (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 6 years, 7 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/mini_installer/mini_installer.cc ('k') | chrome/installer/setup/setup_main.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
« no previous file with comments | « chrome/installer/mini_installer/mini_installer.cc ('k') | chrome/installer/setup/setup_main.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698