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.cc15
1 files changed, 12 insertions, 3 deletions
diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc
index 93eb38d4..6b419c7 100644
--- a/chrome/installer/setup/setup_main.cc
+++ b/chrome/installer/setup/setup_main.cc
@@ -141,7 +141,8 @@ bool UncompressAndPatchChromeArchive(
const installer::InstallerState& installer_state,
installer::ArchivePatchHelper* archive_helper,
installer::ArchiveType* archive_type,
- installer::InstallStatus* install_status) {
+ installer::InstallStatus* install_status,
+ const base::Version& previous_version) {
installer_state.UpdateStage(installer::UNCOMPRESSING);
if (!archive_helper->Uncompress(NULL)) {
*install_status = installer::UNCOMPRESSION_FAILED;
@@ -160,7 +161,8 @@ bool UncompressAndPatchChromeArchive(
// Find the installed version's archive to serve as the source for patching.
base::FilePath patch_source(installer::FindArchiveToPatch(original_state,
- installer_state));
+ installer_state,
+ previous_version));
if (patch_source.empty()) {
LOG(ERROR) << "Failed to find archive to patch.";
*install_status = installer::DIFF_PATCH_SOURCE_MISSING;
@@ -1353,6 +1355,12 @@ InstallStatus InstallProductsHelper(const InstallationState& original_state,
base::FilePath uncompressed_archive(cmd_line.GetSwitchValuePath(
switches::kUncompressedArchive));
if (uncompressed_archive.empty()) {
+ base::Version previous_version;
+ if (cmd_line.HasSwitch(installer::switches::kPreviousVersion)) {
+ previous_version = base::Version(cmd_line.GetSwitchValueASCII(
+ installer::switches::kPreviousVersion));
+ }
+
scoped_ptr<ArchivePatchHelper> archive_helper(
CreateChromeArchiveHelper(setup_exe, cmd_line, installer_state,
unpack_path));
@@ -1363,7 +1371,8 @@ InstallStatus InstallProductsHelper(const InstallationState& original_state,
installer_state,
archive_helper.get(),
archive_type,
- &install_status)) {
+ &install_status,
+ previous_version)) {
DCHECK_NE(install_status, UNKNOWN_STATUS);
return install_status;
}