| Index: chrome/installer/util/installer_state.cc
|
| ===================================================================
|
| --- chrome/installer/util/installer_state.cc (revision 148045)
|
| +++ chrome/installer/util/installer_state.cc (working copy)
|
| @@ -126,118 +126,7 @@
|
| VLOG(1) << (is_uninstall ? "Uninstall" : "Install")
|
| << " distribution: " << p->distribution()->GetAppShortCutName();
|
| }
|
| - if (prefs.install_chrome_app_host()) {
|
| - Product* p =
|
| - AddProductFromPreferences(BrowserDistribution::CHROME_APP_HOST, prefs,
|
| - machine_state);
|
| - VLOG(1) << (is_uninstall ? "Uninstall" : "Install")
|
| - << " distribution: " << p->distribution()->GetAppShortCutName();
|
| - }
|
|
|
| - if (!is_uninstall && is_multi_install()) {
|
| - bool need_binaries = false;
|
| - if (FindProduct(BrowserDistribution::CHROME_APP_HOST)) {
|
| - // App Host will happily use Chrome at system level, or binaries at system
|
| - // level, even if app host is user level.
|
| - const ProductState* chrome_state = machine_state.GetProductState(
|
| - true, // system level
|
| - BrowserDistribution::CHROME_BROWSER);
|
| - // If Chrome is at system-level, multi- or otherwise. We'll use it.
|
| - if (!chrome_state) {
|
| - const ProductState* binaries_state = machine_state.GetProductState(
|
| - true, // system level
|
| - BrowserDistribution::CHROME_BINARIES);
|
| - if (!binaries_state)
|
| - need_binaries = true;
|
| - }
|
| - }
|
| -
|
| - // Chrome/Chrome Frame multi need Binaries at their own level.
|
| - if (FindProduct(BrowserDistribution::CHROME_BROWSER))
|
| - need_binaries = true;
|
| -
|
| - if (FindProduct(BrowserDistribution::CHROME_FRAME))
|
| - need_binaries = true;
|
| -
|
| - if (need_binaries && !FindProduct(BrowserDistribution::CHROME_BINARIES)) {
|
| - // Force binaries to be installed/updated.
|
| - Product* p =
|
| - AddProductFromPreferences(BrowserDistribution::CHROME_BINARIES,
|
| - prefs,
|
| - machine_state);
|
| - VLOG(1) << "Install distribution: "
|
| - << p->distribution()->GetAppShortCutName();
|
| - }
|
| - }
|
| -
|
| - if (is_uninstall && prefs.is_multi_install()) {
|
| - if (FindProduct(BrowserDistribution::CHROME_BROWSER)) {
|
| - const ProductState* chrome_frame_state = machine_state.GetProductState(
|
| - system_install(), BrowserDistribution::CHROME_FRAME);
|
| -
|
| - if (chrome_frame_state != NULL &&
|
| - chrome_frame_state->uninstall_command().HasSwitch(
|
| - switches::kChromeFrameReadyMode) &&
|
| - !FindProduct(BrowserDistribution::CHROME_FRAME)) {
|
| - // Chrome Frame is installed in Ready Mode. Remove it along with Chrome.
|
| - Product* p = AddProductFromPreferences(
|
| - BrowserDistribution::CHROME_FRAME, prefs, machine_state);
|
| -
|
| - VLOG(1) << "Uninstall distribution: "
|
| - << p->distribution()->GetAppShortCutName();
|
| - }
|
| - }
|
| -
|
| - bool keep_binaries = false;
|
| - // Look for a product that is not the binaries and that is not being
|
| - // uninstalled. If not found, binaries are uninstalled too.
|
| - for (size_t i = 0; i < BrowserDistribution::NUM_TYPES; ++i) {
|
| - BrowserDistribution::Type type =
|
| - static_cast<BrowserDistribution::Type>(i);
|
| -
|
| - if (type == BrowserDistribution::CHROME_BINARIES)
|
| - continue;
|
| -
|
| - if (machine_state.GetProductState(system_install(), type) == NULL) {
|
| - // The product is not installed.
|
| - continue;
|
| - }
|
| -
|
| - // The product is installed.
|
| -
|
| - if (!FindProduct(type)) {
|
| - // The product is not being uninstalled.
|
| - if (type != BrowserDistribution::CHROME_APP_HOST) {
|
| - keep_binaries = true;
|
| - break;
|
| - } else {
|
| - // If binaries/chrome are at system-level, we can discard them at
|
| - // user-level...
|
| - if (!machine_state.GetProductState(
|
| - true, // system-level
|
| - BrowserDistribution::CHROME_BROWSER) &&
|
| - !machine_state.GetProductState(
|
| - true, // system-level
|
| - BrowserDistribution::CHROME_BINARIES)) {
|
| - // ... otherwise keep them.
|
| - keep_binaries = true;
|
| - break;
|
| - }
|
| -
|
| - }
|
| - }
|
| -
|
| - // The product is being uninstalled.
|
| - }
|
| - if (!keep_binaries) {
|
| - Product* p =
|
| - AddProductFromPreferences(BrowserDistribution::CHROME_BINARIES, prefs,
|
| - machine_state);
|
| - VLOG(1) << (is_uninstall ? "Uninstall" : "Install")
|
| - << " distribution: " << p->distribution()->GetAppShortCutName();
|
| - }
|
| - }
|
| -
|
| BrowserDistribution* operand = NULL;
|
|
|
| if (is_uninstall) {
|
| @@ -252,26 +141,17 @@
|
| operand = multi_package_distribution_;
|
| operation_ = MULTI_UPDATE;
|
| } else {
|
| + // Initial and over installs will always take place under one of the
|
| + // product app guids. Chrome Frame's will be used if only Chrome Frame
|
| + // is being installed. In all other cases, Chrome's is used.
|
| operation_ = MULTI_INSTALL;
|
| }
|
|
|
| - // Initial, over, and un-installs will always take place under one of the
|
| - // product app guids (Chrome, Chrome Frame, or App Host, in order of
|
| - // preference).
|
| if (operand == NULL) {
|
| - BrowserDistribution::Type operand_distribution_type =
|
| - BrowserDistribution::CHROME_BINARIES;
|
| - if (prefs.install_chrome())
|
| - operand_distribution_type = BrowserDistribution::CHROME_BROWSER;
|
| - else if (prefs.install_chrome_frame())
|
| - operand_distribution_type = BrowserDistribution::CHROME_FRAME;
|
| - else if (prefs.install_chrome_app_host())
|
| - operand_distribution_type = BrowserDistribution::CHROME_APP_HOST;
|
| - else
|
| - NOTREACHED();
|
| -
|
| operand = BrowserDistribution::GetSpecificDistribution(
|
| - operand_distribution_type);
|
| + prefs.install_chrome() ?
|
| + BrowserDistribution::CHROME_BROWSER :
|
| + BrowserDistribution::CHROME_FRAME);
|
| }
|
|
|
| state_key_ = operand->GetStateKey();
|
|
|