Index: chrome/installer/setup/setup_main.cc |
diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc |
index fa7103f12aef23ce4a1b31e58204b71153f7c203..f70916b2dde73c19afe81a77ddb28ff73f2e170a 100644 |
--- a/chrome/installer/setup/setup_main.cc |
+++ b/chrome/installer/setup/setup_main.cc |
@@ -493,38 +493,41 @@ bool CheckPreInstallConditions(const InstallationState& original_state, |
const ProductState* other_state = |
original_state.GetProductState(!system_level, browser_dist->GetType()); |
if (other_state != NULL && !system_level) { |
- LOG(ERROR) << "Already installed version " |
- << other_state->version().GetString() |
- << " conflicts with the current install mode."; |
- if (is_first_install && product->is_chrome()) { |
- // This is user-level install and there is a system-level chrome |
- // installation. Instruct Google Update to launch the existing one. |
- // There should be no error dialog. |
- FilePath chrome_exe(installer::GetChromeInstallPath(!system_level, |
- browser_dist)); |
- if (chrome_exe.empty()) { |
- // If we failed to construct install path. Give up. |
- *status = installer::OS_ERROR; |
- installer_state->WriteInstallerResult(*status, |
- IDS_INSTALL_OS_ERROR_BASE, NULL); |
- } else { |
- *status = installer::EXISTING_VERSION_LAUNCHED; |
- chrome_exe = chrome_exe.Append(installer::kChromeExe); |
- CommandLine cmd(chrome_exe); |
- cmd.AppendSwitch(switches::kFirstRun); |
- installer_state->WriteInstallerResult(*status, 0, NULL); |
- VLOG(1) << "Launching existing system-level chrome instead."; |
- base::LaunchProcess(cmd, base::LaunchOptions(), NULL); |
+ if (is_first_install) { |
+ // This is a user-level install and there is a system-level install of |
+ // the product. |
+ LOG(ERROR) << "Already installed version " |
+ << other_state->version().GetString() |
+ << " at system-level conflicts with this one at user-level."; |
+ if (product->is_chrome()) { |
+ // Instruct Google Update to launch the existing system-level Chrome. |
+ // There should be no error dialog. |
+ FilePath chrome_exe(installer::GetChromeInstallPath(!system_level, |
+ browser_dist)); |
+ if (chrome_exe.empty()) { |
+ // If we failed to construct install path. Give up. |
+ *status = installer::OS_ERROR; |
+ installer_state->WriteInstallerResult(*status, |
+ IDS_INSTALL_OS_ERROR_BASE, NULL); |
+ } else { |
+ *status = installer::EXISTING_VERSION_LAUNCHED; |
+ chrome_exe = chrome_exe.Append(installer::kChromeExe); |
+ CommandLine cmd(chrome_exe); |
+ cmd.AppendSwitch(switches::kFirstRun); |
+ installer_state->WriteInstallerResult(*status, 0, NULL); |
+ VLOG(1) << "Launching existing system-level chrome instead."; |
+ base::LaunchProcess(cmd, base::LaunchOptions(), NULL); |
+ } |
+ return false; |
} |
+ // Display an error message for Chrome Frame. |
robertshield
2011/11/15 18:58:27
Wrap lines 523 - 526 in an else block and deleting
|
+ *status = installer::SYSTEM_LEVEL_INSTALL_EXISTS; |
+ installer_state->WriteInstallerResult(*status, |
+ IDS_INSTALL_SYSTEM_LEVEL_EXISTS_BASE, NULL); |
return false; |
} |
- |
- // This is an update, not an install. Omaha should know the difference |
- // and not show a dialog. |
- *status = installer::SYSTEM_LEVEL_INSTALL_EXISTS; |
- installer_state->WriteInstallerResult(*status, |
- IDS_INSTALL_SYSTEM_LEVEL_EXISTS_BASE, NULL); |
- return false; |
+ // This is an update, not a new install. Allow it to take place so that |
+ // out-of-date versions are not left around. |
} |
} |