summaryrefslogtreecommitdiffstats
path: root/chrome/installer/setup/setup_main.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/installer/setup/setup_main.cc')
-rw-r--r--chrome/installer/setup/setup_main.cc16
1 files changed, 13 insertions, 3 deletions
diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc
index 15998d1..8bdd55c 100644
--- a/chrome/installer/setup/setup_main.cc
+++ b/chrome/installer/setup/setup_main.cc
@@ -27,6 +27,7 @@
#include "base/strings/stringprintf.h"
#include "base/strings/utf_string_conversions.h"
#include "base/values.h"
+#include "base/version.h"
#include "base/win/registry.h"
#include "base/win/scoped_com_initializer.h"
#include "base/win/scoped_comptr.h"
@@ -1078,9 +1079,18 @@ bool HandleNonInstallCmdLineOptions(const InstallationState& original_state,
installer_state->FindProduct(BrowserDistribution::CHROME_BROWSER);
installer::InstallStatus status = installer::INVALID_STATE_FOR_OPTION;
if (chrome_install) {
- installer::HandleOsUpgradeForBrowser(*installer_state,
- *chrome_install);
- status = installer::INSTALL_REPAIRED;
+ scoped_ptr<FileVersionInfo> version_info(
+ FileVersionInfo::CreateFileVersionInfo(setup_exe));
+ const base::Version installed_version(
+ base::UTF16ToUTF8(version_info->product_version()));
+ if (installed_version.IsValid()) {
+ installer::HandleOsUpgradeForBrowser(*installer_state, *chrome_install,
+ installed_version);
+ status = installer::INSTALL_REPAIRED;
+ } else {
+ LOG(DFATAL) << "Failed to extract product version from "
+ << setup_exe.value();
+ }
} else {
LOG(DFATAL) << "Chrome product not found.";
}