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 |