Chromium Code Reviews| Index: chrome/installer/util/chrome_frame_distribution.cc |
| =================================================================== |
| --- chrome/installer/util/chrome_frame_distribution.cc (revision 70232) |
| +++ chrome/installer/util/chrome_frame_distribution.cc (working copy) |
| @@ -14,6 +14,7 @@ |
| #include "base/string_util.h" |
| #include "chrome/installer/util/google_update_constants.h" |
| #include "chrome/installer/util/google_update_settings.h" |
| +#include "chrome/installer/util/helper.h" |
| #include "chrome/installer/util/install_util.h" |
| #include "chrome/installer/util/l10n_string_util.h" |
| #include "chrome/installer/util/master_preferences.h" |
| @@ -32,6 +33,36 @@ |
| type_ = BrowserDistribution::CHROME_FRAME; |
| prefs.GetBool(installer::master_preferences::kChromeFrameReadyMode, |
| &ready_mode_); |
| + |
| + bool system_install = false; |
| + prefs.GetBool(installer::master_preferences::kSystemLevel, &system_install); |
| + |
| + // See if Chrome Frame is already installed. If so, we must make sure that |
| + // the ceee and ready mode flags match. |
| + CommandLine uninstall(CommandLine::NO_PROGRAM); |
| + if (installer::GetUninstallSwitches(system_install, this, &uninstall)) { |
| + if (!ceee_) { |
| + LOG(INFO) << "CEEE is not specified on the command line but CEEE is " |
|
grt (UTC plus 2)
2010/12/29 16:51:50
This log message says that CEEE is already install
tommi (sloooow) - chröme
2010/12/29 17:30:09
Thanks for catching this. Must have happened when
|
| + "already installed. Implicitly enabling CEEE."; |
| + ceee_ = uninstall.HasSwitch(installer::switches::kCeee); |
| + } |
| + |
| + // If the user has already opted in to CF, we shouldn't set the ready-mode |
| + // flag. If we don't do this, we might have two entries in the Add/Remove |
| + // Programs list that can uninstall GCF. Also, we can only enable |
| + // ready-mode if Chrome is also being installed. Without it, there's no way |
| + // to uninstall Chrome Frame. |
| + if (ready_mode_) { |
| + if (!uninstall.HasSwitch(installer::switches::kChromeFrameReadyMode)) { |
| + LOG(INFO) << "Ready mode was specified on the command line but GCF " |
| + "is already fully installed. Ignoring command line."; |
| + ready_mode_ = false; |
| + } else if (!prefs.install_chrome()) { |
| + LOG(WARNING) << "Cannot enable ready mode without installing Chrome."; |
| + ready_mode_ = false; |
| + } |
| + } |
| + } |
| } |
| std::wstring ChromeFrameDistribution::GetAppGuid() { |