| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 // | 4 // |
| 5 // This file declares util functions for setup project. | 5 // This file declares util functions for setup project. |
| 6 | 6 |
| 7 #include "chrome/installer/setup/setup_util.h" | 7 #include "chrome/installer/setup/setup_util.h" |
| 8 | 8 |
| 9 #include <windows.h> | 9 #include <windows.h> |
| 10 | 10 |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 135 patch_status + kBsdiffErrorOffset : 0; | 135 patch_status + kBsdiffErrorOffset : 0; |
| 136 | 136 |
| 137 LOG_IF(ERROR, exit_code) | 137 LOG_IF(ERROR, exit_code) |
| 138 << "Failed to apply bsdiff patch " << patch.value() | 138 << "Failed to apply bsdiff patch " << patch.value() |
| 139 << " to file " << src.value() << " and generating file " << dest.value() | 139 << " to file " << src.value() << " and generating file " << dest.value() |
| 140 << ". err=" << exit_code; | 140 << ". err=" << exit_code; |
| 141 | 141 |
| 142 return exit_code; | 142 return exit_code; |
| 143 } | 143 } |
| 144 | 144 |
| 145 base::Version* GetMaxVersionFromArchiveDir(const base::FilePath& chrome_path) { | 145 Version* GetMaxVersionFromArchiveDir(const base::FilePath& chrome_path) { |
| 146 VLOG(1) << "Looking for Chrome version folder under " << chrome_path.value(); | 146 VLOG(1) << "Looking for Chrome version folder under " << chrome_path.value(); |
| 147 base::FileEnumerator version_enum(chrome_path, false, | 147 base::FileEnumerator version_enum(chrome_path, false, |
| 148 base::FileEnumerator::DIRECTORIES); | 148 base::FileEnumerator::DIRECTORIES); |
| 149 // TODO(tommi): The version directory really should match the version of | 149 // TODO(tommi): The version directory really should match the version of |
| 150 // setup.exe. To begin with, we should at least DCHECK that that's true. | 150 // setup.exe. To begin with, we should at least DCHECK that that's true. |
| 151 | 151 |
| 152 scoped_ptr<base::Version> max_version(new base::Version("0.0.0.0")); | 152 scoped_ptr<Version> max_version(new Version("0.0.0.0")); |
| 153 bool version_found = false; | 153 bool version_found = false; |
| 154 | 154 |
| 155 while (!version_enum.Next().empty()) { | 155 while (!version_enum.Next().empty()) { |
| 156 base::FileEnumerator::FileInfo find_data = version_enum.GetInfo(); | 156 base::FileEnumerator::FileInfo find_data = version_enum.GetInfo(); |
| 157 VLOG(1) << "directory found: " << find_data.GetName().value(); | 157 VLOG(1) << "directory found: " << find_data.GetName().value(); |
| 158 | 158 |
| 159 scoped_ptr<base::Version> found_version( | 159 scoped_ptr<Version> found_version( |
| 160 new base::Version(base::UTF16ToASCII(find_data.GetName().value()))); | 160 new Version(base::UTF16ToASCII(find_data.GetName().value()))); |
| 161 if (found_version->IsValid() && | 161 if (found_version->IsValid() && |
| 162 found_version->CompareTo(*max_version.get()) > 0) { | 162 found_version->CompareTo(*max_version.get()) > 0) { |
| 163 max_version.reset(found_version.release()); | 163 max_version.reset(found_version.release()); |
| 164 version_found = true; | 164 version_found = true; |
| 165 } | 165 } |
| 166 } | 166 } |
| 167 | 167 |
| 168 return (version_found ? max_version.release() : NULL); | 168 return (version_found ? max_version.release() : NULL); |
| 169 } | 169 } |
| 170 | 170 |
| (...skipping 12 matching lines...) Expand all Loading... |
| 183 base::FilePath patch_source; | 183 base::FilePath patch_source; |
| 184 const ProductState* product = | 184 const ProductState* product = |
| 185 original_state.GetProductState(installer_state.system_install(), | 185 original_state.GetProductState(installer_state.system_install(), |
| 186 installer_state.state_type()); | 186 installer_state.state_type()); |
| 187 if (product) { | 187 if (product) { |
| 188 patch_source = installer_state.GetInstallerDirectory(product->version()) | 188 patch_source = installer_state.GetInstallerDirectory(product->version()) |
| 189 .Append(installer::kChromeArchive); | 189 .Append(installer::kChromeArchive); |
| 190 if (base::PathExists(patch_source)) | 190 if (base::PathExists(patch_source)) |
| 191 return patch_source; | 191 return patch_source; |
| 192 } | 192 } |
| 193 scoped_ptr<base::Version> version( | 193 scoped_ptr<Version> version( |
| 194 installer::GetMaxVersionFromArchiveDir(installer_state.target_path())); | 194 installer::GetMaxVersionFromArchiveDir(installer_state.target_path())); |
| 195 if (version) { | 195 if (version) { |
| 196 patch_source = installer_state.GetInstallerDirectory(*version) | 196 patch_source = installer_state.GetInstallerDirectory(*version) |
| 197 .Append(installer::kChromeArchive); | 197 .Append(installer::kChromeArchive); |
| 198 if (base::PathExists(patch_source)) | 198 if (base::PathExists(patch_source)) |
| 199 return patch_source; | 199 return patch_source; |
| 200 } | 200 } |
| 201 return base::FilePath(); | 201 return base::FilePath(); |
| 202 } | 202 } |
| 203 | 203 |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 256 ::CloseHandle(pi.hThread); | 256 ::CloseHandle(pi.hThread); |
| 257 ::CloseHandle(pi.hProcess); | 257 ::CloseHandle(pi.hProcess); |
| 258 } | 258 } |
| 259 | 259 |
| 260 return ok != FALSE; | 260 return ok != FALSE; |
| 261 } | 261 } |
| 262 | 262 |
| 263 bool GetExistingHigherInstaller( | 263 bool GetExistingHigherInstaller( |
| 264 const InstallationState& original_state, | 264 const InstallationState& original_state, |
| 265 bool system_install, | 265 bool system_install, |
| 266 const base::Version& installer_version, | 266 const Version& installer_version, |
| 267 base::FilePath* setup_exe) { | 267 base::FilePath* setup_exe) { |
| 268 DCHECK(setup_exe); | 268 DCHECK(setup_exe); |
| 269 bool trying_single_browser = false; | 269 bool trying_single_browser = false; |
| 270 const ProductState* existing_state = | 270 const ProductState* existing_state = |
| 271 original_state.GetProductState(system_install, | 271 original_state.GetProductState(system_install, |
| 272 BrowserDistribution::CHROME_BINARIES); | 272 BrowserDistribution::CHROME_BINARIES); |
| 273 if (!existing_state) { | 273 if (!existing_state) { |
| 274 // The binaries aren't installed, but perhaps a single-install Chrome is. | 274 // The binaries aren't installed, but perhaps a single-install Chrome is. |
| 275 trying_single_browser = true; | 275 trying_single_browser = true; |
| 276 existing_state = | 276 existing_state = |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 513 } | 513 } |
| 514 | 514 |
| 515 ScopedTokenPrivilege::~ScopedTokenPrivilege() { | 515 ScopedTokenPrivilege::~ScopedTokenPrivilege() { |
| 516 if (is_enabled_ && previous_privileges_.PrivilegeCount != 0) { | 516 if (is_enabled_ && previous_privileges_.PrivilegeCount != 0) { |
| 517 ::AdjustTokenPrivileges(token_.Get(), FALSE, &previous_privileges_, | 517 ::AdjustTokenPrivileges(token_.Get(), FALSE, &previous_privileges_, |
| 518 sizeof(TOKEN_PRIVILEGES), NULL, NULL); | 518 sizeof(TOKEN_PRIVILEGES), NULL, NULL); |
| 519 } | 519 } |
| 520 } | 520 } |
| 521 | 521 |
| 522 } // namespace installer | 522 } // namespace installer |
| OLD | NEW |