OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 #include "chrome/installer/util/package.h" | 5 #include "chrome/installer/util/package.h" |
6 | 6 |
7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/string_util.h" |
9 #include "base/utf_string_conversions.h" | 10 #include "base/utf_string_conversions.h" |
10 #include "base/win/registry.h" | 11 #include "base/win/registry.h" |
11 #include "chrome/installer/util/channel_info.h" | 12 #include "chrome/installer/util/channel_info.h" |
12 #include "chrome/installer/util/delete_tree_work_item.h" | 13 #include "chrome/installer/util/delete_tree_work_item.h" |
13 #include "chrome/installer/util/google_update_constants.h" | 14 #include "chrome/installer/util/google_update_constants.h" |
14 #include "chrome/installer/util/master_preferences.h" | 15 #include "chrome/installer/util/master_preferences.h" |
15 #include "chrome/installer/util/package_properties.h" | 16 #include "chrome/installer/util/package_properties.h" |
16 #include "chrome/installer/util/product.h" | 17 #include "chrome/installer/util/product.h" |
17 | 18 |
18 using base::win::RegKey; | 19 using base::win::RegKey; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
80 RegKey chrome_key(root, product->distribution()->GetVersionKey().c_str(), | 81 RegKey chrome_key(root, product->distribution()->GetVersionKey().c_str(), |
81 KEY_READ); | 82 KEY_READ); |
82 std::wstring version; | 83 std::wstring version; |
83 if (new_chrome_exists) | 84 if (new_chrome_exists) |
84 chrome_key.ReadValue(google_update::kRegOldVersionField, &version); | 85 chrome_key.ReadValue(google_update::kRegOldVersionField, &version); |
85 | 86 |
86 if (version.empty()) | 87 if (version.empty()) |
87 chrome_key.ReadValue(google_update::kRegVersionField, &version); | 88 chrome_key.ReadValue(google_update::kRegVersionField, &version); |
88 | 89 |
89 if (!version.empty()) { | 90 if (!version.empty()) { |
90 scoped_ptr<Version> this_version(Version::GetVersionFromString(version)); | 91 scoped_ptr<Version> this_version(Version::GetVersionFromString( |
| 92 WideToASCII(version))); |
91 if (this_version.get()) { | 93 if (this_version.get()) { |
92 if (!current_version.get() || | 94 if (!current_version.get() || |
93 (current_version->CompareTo(*this_version) > 0)) { | 95 (current_version->CompareTo(*this_version) > 0)) { |
94 current_version.reset(this_version.release()); | 96 current_version.reset(this_version.release()); |
95 } else if (current_version.get()) { | 97 } else if (current_version.get()) { |
96 DCHECK_EQ(current_version->GetString(), this_version->GetString()) | 98 DCHECK_EQ(current_version->GetString(), this_version->GetString()) |
97 << "found distributions of different versions in the same " | 99 << "found distributions of different versions in the same " |
98 "installation folder!"; | 100 "installation folder!"; |
99 } | 101 } |
100 } | 102 } |
101 } | 103 } |
102 } | 104 } |
103 | 105 |
104 return current_version.release(); | 106 return current_version.release(); |
105 } | 107 } |
106 | 108 |
107 void Package::RemoveOldVersionDirectories( | 109 void Package::RemoveOldVersionDirectories( |
108 const Version& latest_version) const { | 110 const Version& latest_version) const { |
109 file_util::FileEnumerator version_enum(path_, false, | 111 file_util::FileEnumerator version_enum(path_, false, |
110 file_util::FileEnumerator::DIRECTORIES); | 112 file_util::FileEnumerator::DIRECTORIES); |
111 scoped_ptr<Version> version; | 113 scoped_ptr<Version> version; |
112 | 114 |
113 // We try to delete all directories whose versions are lower than | 115 // We try to delete all directories whose versions are lower than |
114 // latest_version. | 116 // latest_version. |
115 FilePath next_version = version_enum.Next(); | 117 FilePath next_version = version_enum.Next(); |
116 while (!next_version.empty()) { | 118 while (!next_version.empty()) { |
117 file_util::FileEnumerator::FindInfo find_data = {0}; | 119 file_util::FileEnumerator::FindInfo find_data = {0}; |
118 version_enum.GetFindInfo(&find_data); | 120 version_enum.GetFindInfo(&find_data); |
119 VLOG(1) << "directory found: " << find_data.cFileName; | 121 VLOG(1) << "directory found: " << find_data.cFileName; |
120 version.reset(Version::GetVersionFromString(find_data.cFileName)); | 122 version.reset(Version::GetVersionFromString( |
| 123 WideToASCII(find_data.cFileName))); |
121 if (version.get() && (latest_version.CompareTo(*version) > 0)) { | 124 if (version.get() && (latest_version.CompareTo(*version) > 0)) { |
122 std::vector<FilePath> key_files; | 125 std::vector<FilePath> key_files; |
123 for (Products::const_iterator it = products_.begin(); | 126 for (Products::const_iterator it = products_.begin(); |
124 it != products_.end(); ++it) { | 127 it != products_.end(); ++it) { |
125 BrowserDistribution* dist = it->get()->distribution(); | 128 BrowserDistribution* dist = it->get()->distribution(); |
126 std::vector<FilePath> dist_key_files(dist->GetKeyFiles()); | 129 std::vector<FilePath> dist_key_files(dist->GetKeyFiles()); |
127 std::vector<FilePath>::const_iterator key_file_iter( | 130 std::vector<FilePath>::const_iterator key_file_iter( |
128 dist_key_files.begin()); | 131 dist_key_files.begin()); |
129 for (; key_file_iter != dist_key_files.end(); ++key_file_iter) { | 132 for (; key_file_iter != dist_key_files.end(); ++key_file_iter) { |
130 key_files.push_back(next_version.Append(*key_file_iter)); | 133 key_files.push_back(next_version.Append(*key_file_iter)); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
178 << dist->GetApplicationName(); | 181 << dist->GetApplicationName(); |
179 } | 182 } |
180 } | 183 } |
181 } | 184 } |
182 | 185 |
183 return ret; | 186 return ret; |
184 } | 187 } |
185 | 188 |
186 } // namespace installer | 189 } // namespace installer |
187 | 190 |
OLD | NEW |