| Index: chrome/installer/setup/install_worker.cc
|
| diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc
|
| index d3366303404614eae086cd17f8ba6f37dcd9bd50..ec65627a793ce63b2d11acbd526dd16d92d99815 100644
|
| --- a/chrome/installer/setup/install_worker.cc
|
| +++ b/chrome/installer/setup/install_worker.cc
|
| @@ -71,6 +71,11 @@ const wchar_t kIELowRightsPolicyOldGuid[] =
|
| const wchar_t kElevationPolicyKeyPath[] =
|
| L"SOFTWARE\\Microsoft\\Internet Explorer\\Low Rights\\ElevationPolicy\\";
|
|
|
| +// The legacy command ids for installing an application or extension. These are
|
| +// only here so they can be removed from the registry.
|
| +const wchar_t kLegacyCmdInstallApp[] = L"install-application";
|
| +const wchar_t kLegacyCmdInstallExtension[] = L"install-extension";
|
| +
|
| void GetOldIELowRightsElevationPolicyKeyPath(base::string16* key_path) {
|
| key_path->assign(kElevationPolicyKeyPath,
|
| arraysize(kElevationPolicyKeyPath) - 1);
|
| @@ -230,31 +235,16 @@ void AddCommandWithParameterWorkItems(const InstallerState& installer_state,
|
| }
|
| }
|
|
|
| -void AddInstallAppCommandWorkItems(const InstallerState& installer_state,
|
| - const InstallationState& machine_state,
|
| - const Version& new_version,
|
| - const Product& product,
|
| - WorkItemList* work_item_list) {
|
| - DCHECK(product.is_chrome_app_host());
|
| - AddCommandWithParameterWorkItems(installer_state, machine_state, new_version,
|
| - product, kCmdInstallApp,
|
| - installer::kChromeAppHostExe,
|
| - ::switches::kInstallFromWebstore,
|
| - work_item_list);
|
| -}
|
| -
|
| -void AddInstallExtensionCommandWorkItem(const InstallerState& installer_state,
|
| - const InstallationState& machine_state,
|
| - const base::FilePath& setup_path,
|
| - const Version& new_version,
|
| - const Product& product,
|
| - WorkItemList* work_item_list) {
|
| - DCHECK(product.is_chrome());
|
| - AddCommandWithParameterWorkItems(installer_state, machine_state, new_version,
|
| - product, kCmdInstallExtension,
|
| - installer::kChromeExe,
|
| - ::switches::kLimitedInstallFromWebstore,
|
| - work_item_list);
|
| +void AddLegacyAppCommandRemovalItem(const InstallerState& installer_state,
|
| + BrowserDistribution* distribution,
|
| + const wchar_t* name,
|
| + WorkItemList* work_item_list) {
|
| + // These failures are ignored because this is a clean-up operation that
|
| + // shouldn't block an install or update on failing.
|
| + work_item_list->AddDeleteRegKeyWorkItem(
|
| + installer_state.root_key(),
|
| + GetRegCommandKey(distribution, name),
|
| + KEY_WOW64_32KEY)->set_ignore_failure(true);
|
| }
|
|
|
| // A callback invoked by |work_item| that adds firewall rules for Chrome. Rules
|
| @@ -401,17 +391,24 @@ void AddProductSpecificWorkItems(const InstallationState& original_state,
|
| for (Products::const_iterator it = products.begin(); it < products.end();
|
| ++it) {
|
| const Product& p = **it;
|
| - if (p.is_chrome_app_host()) {
|
| - AddInstallAppCommandWorkItems(installer_state, original_state,
|
| - new_version, p, list);
|
| - }
|
| if (p.is_chrome()) {
|
| AddOsUpgradeWorkItems(installer_state, setup_path, new_version, p,
|
| list);
|
| - AddInstallExtensionCommandWorkItem(installer_state, original_state,
|
| - setup_path, new_version, p, list);
|
| AddFirewallRulesWorkItems(
|
| installer_state, p.distribution(), is_new_install, list);
|
| + AddLegacyAppCommandRemovalItem(
|
| + installer_state, p.distribution(), kLegacyCmdInstallExtension, list);
|
| +
|
| + if (p.distribution()->AppHostIsSupported()) {
|
| + // Unconditionally remove the "install-application" command from the app
|
| + // hosts's key.
|
| + AddLegacyAppCommandRemovalItem(
|
| + installer_state,
|
| + BrowserDistribution::GetSpecificDistribution(
|
| + BrowserDistribution::CHROME_APP_HOST),
|
| + kLegacyCmdInstallApp,
|
| + list);
|
| + }
|
| }
|
| if (p.is_chrome_binaries()) {
|
| AddQueryEULAAcceptanceWorkItems(
|
|
|