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 #include "chrome/installer/setup/install.h" | 5 #include "chrome/installer/setup/install.h" |
6 | 6 |
7 #include <windows.h> | 7 #include <windows.h> |
8 #include <shlobj.h> | 8 #include <shlobj.h> |
9 #include <time.h> | 9 #include <time.h> |
10 | 10 |
(...skipping 183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
194 install_list.get()); | 194 install_list.get()); |
195 | 195 |
196 base::FilePath new_chrome_exe( | 196 base::FilePath new_chrome_exe( |
197 installer_state.target_path().Append(installer::kChromeNewExe)); | 197 installer_state.target_path().Append(installer::kChromeNewExe)); |
198 | 198 |
199 installer_state.UpdateStage(installer::EXECUTING); | 199 installer_state.UpdateStage(installer::EXECUTING); |
200 | 200 |
201 if (!install_list->Do()) { | 201 if (!install_list->Do()) { |
202 installer_state.UpdateStage(installer::ROLLINGBACK); | 202 installer_state.UpdateStage(installer::ROLLINGBACK); |
203 installer::InstallStatus result = | 203 installer::InstallStatus result = |
204 file_util::PathExists(new_chrome_exe) && current_version->get() && | 204 base::PathExists(new_chrome_exe) && current_version->get() && |
205 new_version.Equals(*current_version->get()) ? | 205 new_version.Equals(*current_version->get()) ? |
206 installer::SAME_VERSION_REPAIR_FAILED : | 206 installer::SAME_VERSION_REPAIR_FAILED : |
207 installer::INSTALL_FAILED; | 207 installer::INSTALL_FAILED; |
208 LOG(ERROR) << "Install failed, rolling back... result: " << result; | 208 LOG(ERROR) << "Install failed, rolling back... result: " << result; |
209 install_list->Rollback(); | 209 install_list->Rollback(); |
210 LOG(ERROR) << "Rollback complete. "; | 210 LOG(ERROR) << "Rollback complete. "; |
211 return result; | 211 return result; |
212 } | 212 } |
213 | 213 |
214 installer_state.UpdateStage(installer::REFRESHING_POLICY); | 214 installer_state.UpdateStage(installer::REFRESHING_POLICY); |
215 | 215 |
216 installer::RefreshElevationPolicy(); | 216 installer::RefreshElevationPolicy(); |
217 | 217 |
218 if (!current_version->get()) { | 218 if (!current_version->get()) { |
219 VLOG(1) << "First install of version " << new_version.GetString(); | 219 VLOG(1) << "First install of version " << new_version.GetString(); |
220 return installer::FIRST_INSTALL_SUCCESS; | 220 return installer::FIRST_INSTALL_SUCCESS; |
221 } | 221 } |
222 | 222 |
223 if (new_version.Equals(**current_version)) { | 223 if (new_version.Equals(**current_version)) { |
224 VLOG(1) << "Install repaired of version " << new_version.GetString(); | 224 VLOG(1) << "Install repaired of version " << new_version.GetString(); |
225 return installer::INSTALL_REPAIRED; | 225 return installer::INSTALL_REPAIRED; |
226 } | 226 } |
227 | 227 |
228 if (new_version.CompareTo(**current_version) > 0) { | 228 if (new_version.CompareTo(**current_version) > 0) { |
229 if (file_util::PathExists(new_chrome_exe)) { | 229 if (base::PathExists(new_chrome_exe)) { |
230 VLOG(1) << "Version updated to " << new_version.GetString() | 230 VLOG(1) << "Version updated to " << new_version.GetString() |
231 << " while running " << (*current_version)->GetString(); | 231 << " while running " << (*current_version)->GetString(); |
232 return installer::IN_USE_UPDATED; | 232 return installer::IN_USE_UPDATED; |
233 } | 233 } |
234 VLOG(1) << "Version updated to " << new_version.GetString(); | 234 VLOG(1) << "Version updated to " << new_version.GetString(); |
235 return installer::NEW_VERSION_UPDATED; | 235 return installer::NEW_VERSION_UPDATED; |
236 } | 236 } |
237 | 237 |
238 LOG(ERROR) << "Not sure how we got here while updating" | 238 LOG(ERROR) << "Not sure how we got here while updating" |
239 << ", new version: " << new_version.GetString() | 239 << ", new version: " << new_version.GetString() |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 | 295 |
296 bool CreateVisualElementsManifest(const base::FilePath& src_path, | 296 bool CreateVisualElementsManifest(const base::FilePath& src_path, |
297 const Version& version) { | 297 const Version& version) { |
298 // Construct the relative path to the versioned VisualElements directory. | 298 // Construct the relative path to the versioned VisualElements directory. |
299 string16 elements_dir(ASCIIToUTF16(version.GetString())); | 299 string16 elements_dir(ASCIIToUTF16(version.GetString())); |
300 elements_dir.push_back(base::FilePath::kSeparators[0]); | 300 elements_dir.push_back(base::FilePath::kSeparators[0]); |
301 elements_dir.append(installer::kVisualElements); | 301 elements_dir.append(installer::kVisualElements); |
302 | 302 |
303 // Some distributions of Chromium may not include visual elements. Only | 303 // Some distributions of Chromium may not include visual elements. Only |
304 // proceed if this distribution does. | 304 // proceed if this distribution does. |
305 if (!file_util::PathExists(src_path.Append(elements_dir))) { | 305 if (!base::PathExists(src_path.Append(elements_dir))) { |
306 VLOG(1) << "No visual elements found, not writing " | 306 VLOG(1) << "No visual elements found, not writing " |
307 << installer::kVisualElementsManifest << " to " << src_path.value(); | 307 << installer::kVisualElementsManifest << " to " << src_path.value(); |
308 return true; | 308 return true; |
309 } else { | 309 } else { |
310 // A printf_p-style format string for generating the visual elements | 310 // A printf_p-style format string for generating the visual elements |
311 // manifest. Required arguments, in order, are: | 311 // manifest. Required arguments, in order, are: |
312 // - Localized display name for the product. | 312 // - Localized display name for the product. |
313 // - Relative path to the VisualElements directory. | 313 // - Relative path to the VisualElements directory. |
314 static const char kManifestTemplate[] = | 314 static const char kManifestTemplate[] = |
315 "<Application>\r\n" | 315 "<Application>\r\n" |
(...skipping 350 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
666 // present for this user (as some shortcuts used to be installed on first | 666 // present for this user (as some shortcuts used to be installed on first |
667 // run and this could otherwise re-install shortcuts for users that have | 667 // run and this could otherwise re-install shortcuts for users that have |
668 // already deleted them in the past). | 668 // already deleted them in the past). |
669 base::FilePath first_run_sentinel; | 669 base::FilePath first_run_sentinel; |
670 InstallUtil::GetSentinelFilePath( | 670 InstallUtil::GetSentinelFilePath( |
671 chrome::kFirstRunSentinel, chrome.distribution(), &first_run_sentinel); | 671 chrome::kFirstRunSentinel, chrome.distribution(), &first_run_sentinel); |
672 // Decide whether to create the shortcuts or simply replace existing | 672 // Decide whether to create the shortcuts or simply replace existing |
673 // shortcuts; if the decision is to create them, only shortcuts whose matching | 673 // shortcuts; if the decision is to create them, only shortcuts whose matching |
674 // all-users shortcut isn't present on the system will be created. | 674 // all-users shortcut isn't present on the system will be created. |
675 InstallShortcutOperation install_operation = | 675 InstallShortcutOperation install_operation = |
676 (!force && file_util::PathExists(first_run_sentinel) ? | 676 (!force && base::PathExists(first_run_sentinel) ? |
677 INSTALL_SHORTCUT_REPLACE_EXISTING : | 677 INSTALL_SHORTCUT_REPLACE_EXISTING : |
678 INSTALL_SHORTCUT_CREATE_EACH_IF_NO_SYSTEM_LEVEL); | 678 INSTALL_SHORTCUT_CREATE_EACH_IF_NO_SYSTEM_LEVEL); |
679 | 679 |
680 // Read master_preferences copied beside chrome.exe at install. | 680 // Read master_preferences copied beside chrome.exe at install. |
681 MasterPreferences prefs(installation_root.AppendASCII(kDefaultMasterPrefs)); | 681 MasterPreferences prefs(installation_root.AppendASCII(kDefaultMasterPrefs)); |
682 base::FilePath chrome_exe(installation_root.Append(kChromeExe)); | 682 base::FilePath chrome_exe(installation_root.Append(kChromeExe)); |
683 CreateOrUpdateShortcuts( | 683 CreateOrUpdateShortcuts( |
684 chrome_exe, chrome, prefs, CURRENT_USER, install_operation); | 684 chrome_exe, chrome, prefs, CURRENT_USER, install_operation); |
685 } | 685 } |
686 | 686 |
687 bool InstallFromWebstore(const std::string& app_code) { | 687 bool InstallFromWebstore(const std::string& app_code) { |
688 base::FilePath app_host_path(chrome_launcher_support::GetAnyAppHostPath()); | 688 base::FilePath app_host_path(chrome_launcher_support::GetAnyAppHostPath()); |
689 if (app_host_path.empty()) | 689 if (app_host_path.empty()) |
690 return false; | 690 return false; |
691 | 691 |
692 CommandLine cmd(app_host_path); | 692 CommandLine cmd(app_host_path); |
693 cmd.AppendSwitchASCII(::switches::kInstallFromWebstore, app_code); | 693 cmd.AppendSwitchASCII(::switches::kInstallFromWebstore, app_code); |
694 VLOG(1) << "App install command: " << cmd.GetCommandLineString(); | 694 VLOG(1) << "App install command: " << cmd.GetCommandLineString(); |
695 return base::LaunchProcess(cmd, base::LaunchOptions(), NULL); | 695 return base::LaunchProcess(cmd, base::LaunchOptions(), NULL); |
696 } | 696 } |
697 | 697 |
698 } // namespace installer | 698 } // namespace installer |
OLD | NEW |