Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(59)

Side by Side Diff: chrome/installer/setup/install.cc

Issue 345021: Continue to remove CHROME_FRAME_BUILD define from code that goes into chrome.... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 11 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 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 <shlobj.h> 5 #include <shlobj.h>
6 #include <time.h> 6 #include <time.h>
7 7
8 #include "chrome/installer/setup/install.h" 8 #include "chrome/installer/setup/install.h"
9 9
10 #include "base/command_line.h"
10 #include "base/file_util.h" 11 #include "base/file_util.h"
11 #include "base/logging.h" 12 #include "base/logging.h"
12 #include "base/path_service.h" 13 #include "base/path_service.h"
13 #include "base/registry.h" 14 #include "base/registry.h"
14 #include "base/scoped_ptr.h" 15 #include "base/scoped_ptr.h"
15 #include "chrome/installer/setup/setup_constants.h" 16 #include "chrome/installer/setup/setup_constants.h"
16 #include "chrome/installer/util/browser_distribution.h" 17 #include "chrome/installer/util/browser_distribution.h"
17 #include "chrome/installer/util/create_reg_key_work_item.h" 18 #include "chrome/installer/util/create_reg_key_work_item.h"
18 #include "chrome/installer/util/delete_after_reboot_helper.h" 19 #include "chrome/installer/util/delete_after_reboot_helper.h"
19 #include "chrome/installer/util/google_update_constants.h" 20 #include "chrome/installer/util/google_update_constants.h"
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 install_list->AddCopyTreeWorkItem(exe_path, exe_dst, temp_path, 79 install_list->AddCopyTreeWorkItem(exe_path, exe_dst, temp_path,
79 WorkItem::ALWAYS); 80 WorkItem::ALWAYS);
80 if (system_level) { 81 if (system_level) {
81 install_list->AddCopyTreeWorkItem(archive_path, archive_dst, temp_path, 82 install_list->AddCopyTreeWorkItem(archive_path, archive_dst, temp_path,
82 WorkItem::ALWAYS); 83 WorkItem::ALWAYS);
83 } else { 84 } else {
84 install_list->AddMoveTreeWorkItem(archive_path, archive_dst, temp_path); 85 install_list->AddMoveTreeWorkItem(archive_path, archive_dst, temp_path);
85 } 86 }
86 } 87 }
87 88
89 void AppendUninstallCommandLineFlags(std::wstring* uninstall_cmd_line,
90 bool is_system) {
91 DCHECK(uninstall_cmd_line);
92 uninstall_cmd_line->append(L" --");
93 uninstall_cmd_line->append(installer_util::switches::kUninstall);
94
95 if (InstallUtil::IsChromeFrameProcess()) {
96 uninstall_cmd_line->append(L" --");
97 uninstall_cmd_line->append(installer_util::switches::kForceUninstall);
98 uninstall_cmd_line->append(L" --");
99 uninstall_cmd_line->append(installer_util::switches::kDeleteProfile);
100 uninstall_cmd_line->append(L" --");
101 uninstall_cmd_line->append(installer_util::switches::kChromeFrame);
102 }
103
104 // Propagate the verbose logging switch to uninstalls too.
105 const CommandLine& command_line = *CommandLine::ForCurrentProcess();
106 if (command_line.HasSwitch(installer_util::switches::kVerboseLogging)) {
107 uninstall_cmd_line->append(L" --");
108 uninstall_cmd_line->append(installer_util::switches::kVerboseLogging);
109 }
110
111 if (is_system) {
112 uninstall_cmd_line->append(L" --");
113 uninstall_cmd_line->append(installer_util::switches::kSystemLevel);
114 }
115 }
116
88 // This method adds work items to create (or update) Chrome uninstall entry in 117 // This method adds work items to create (or update) Chrome uninstall entry in
89 // Control Panel->Add/Remove Programs list. 118 // Control Panel->Add/Remove Programs list.
90 void AddUninstallShortcutWorkItems(HKEY reg_root, 119 void AddUninstallShortcutWorkItems(HKEY reg_root,
91 const std::wstring& exe_path, 120 const std::wstring& exe_path,
92 const std::wstring& install_path, 121 const std::wstring& install_path,
93 const std::wstring& product_name, 122 const std::wstring& product_name,
94 const std::wstring& new_version, 123 const std::wstring& new_version,
95 WorkItemList* install_list) { 124 WorkItemList* install_list) {
96 std::wstring uninstall_cmd(L"\""); 125 std::wstring uninstall_cmd(L"\"");
97 uninstall_cmd.append(installer::GetInstallerPathUnderChrome(install_path, 126 uninstall_cmd.append(installer::GetInstallerPathUnderChrome(install_path,
98 new_version)); 127 new_version));
99 file_util::AppendToPath(&uninstall_cmd, 128 file_util::AppendToPath(&uninstall_cmd,
100 file_util::GetFilenameFromPath(exe_path)); 129 file_util::GetFilenameFromPath(exe_path));
101 uninstall_cmd.append(L"\" --"); 130 uninstall_cmd.append(L"\"");
102 uninstall_cmd.append(installer_util::switches::kUninstall);
103 131
104 #if defined(CHROME_FRAME_BUILD) 132 AppendUninstallCommandLineFlags(&uninstall_cmd,
105 uninstall_cmd.append(L" --"); 133 reg_root == HKEY_LOCAL_MACHINE);
106 uninstall_cmd.append(installer_util::switches::kForceUninstall);
107 uninstall_cmd.append(L" --");
108 uninstall_cmd.append(installer_util::switches::kDeleteProfile);
109 #endif
110
111 if (reg_root == HKEY_LOCAL_MACHINE) {
112 uninstall_cmd.append(L" --");
113 uninstall_cmd.append(installer_util::switches::kSystemLevel);
114 }
115 134
116 // Create DisplayName, UninstallString and InstallLocation keys 135 // Create DisplayName, UninstallString and InstallLocation keys
117 BrowserDistribution* dist = BrowserDistribution::GetDistribution(); 136 BrowserDistribution* dist = BrowserDistribution::GetDistribution();
118 std::wstring uninstall_reg = dist->GetUninstallRegPath(); 137 std::wstring uninstall_reg = dist->GetUninstallRegPath();
119 install_list->AddCreateRegKeyWorkItem(reg_root, uninstall_reg); 138 install_list->AddCreateRegKeyWorkItem(reg_root, uninstall_reg);
120 install_list->AddSetRegValueWorkItem(reg_root, uninstall_reg, 139 install_list->AddSetRegValueWorkItem(reg_root, uninstall_reg,
121 installer_util::kUninstallDisplayNameField, product_name, true); 140 installer_util::kUninstallDisplayNameField, product_name, true);
122 install_list->AddSetRegValueWorkItem(reg_root, 141 install_list->AddSetRegValueWorkItem(reg_root,
123 uninstall_reg, 142 uninstall_reg,
124 installer_util::kUninstallStringField, 143 installer_util::kUninstallStringField,
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 dist->GetUninstallLinkName() + L".lnk"); 262 dist->GetUninstallLinkName() + L".lnk");
244 if ((install_status == installer_util::FIRST_INSTALL_SUCCESS) || 263 if ((install_status == installer_util::FIRST_INSTALL_SUCCESS) ||
245 (install_status == installer_util::INSTALL_REPAIRED) || 264 (install_status == installer_util::INSTALL_REPAIRED) ||
246 (file_util::PathExists(uninstall_link))) { 265 (file_util::PathExists(uninstall_link))) {
247 if (!file_util::PathExists(shortcut_path)) 266 if (!file_util::PathExists(shortcut_path))
248 file_util::CreateDirectoryW(shortcut_path); 267 file_util::CreateDirectoryW(shortcut_path);
249 std::wstring setup_exe(installer::GetInstallerPathUnderChrome(install_path, 268 std::wstring setup_exe(installer::GetInstallerPathUnderChrome(install_path,
250 new_version)); 269 new_version));
251 file_util::AppendToPath(&setup_exe, 270 file_util::AppendToPath(&setup_exe,
252 file_util::GetFilenameFromPath(exe_path)); 271 file_util::GetFilenameFromPath(exe_path));
253 std::wstring arguments(L" --");
254 arguments.append(installer_util::switches::kUninstall);
255 272
256 #if defined(CHROME_FRAME_BUILD) 273 std::wstring arguments;
257 arguments.append(L" --"); 274 AppendUninstallCommandLineFlags(&arguments, system_install);
258 arguments.append(installer_util::switches::kForceUninstall);
259 arguments.append(L" --");
260 arguments.append(installer_util::switches::kDeleteProfile);
261 #endif
262
263 if (system_install) {
264 arguments.append(L" --");
265 arguments.append(installer_util::switches::kSystemLevel);
266 }
267 275
268 LOG(INFO) << "Creating/updating uninstall link at " 276 LOG(INFO) << "Creating/updating uninstall link at "
269 << uninstall_link.value(); 277 << uninstall_link.value();
270 ret = ret && file_util::CreateShortcutLink(setup_exe.c_str(), 278 ret = ret && file_util::CreateShortcutLink(setup_exe.c_str(),
271 uninstall_link.value().c_str(), 279 uninstall_link.value().c_str(),
272 NULL, 280 NULL,
273 arguments.c_str(), 281 arguments.c_str(),
274 NULL, setup_exe.c_str(), 0); 282 NULL, setup_exe.c_str(), 0);
275 } 283 }
276 284
(...skipping 182 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 const std::wstring& archive_path, 467 const std::wstring& archive_path,
460 const std::wstring& src_path, 468 const std::wstring& src_path,
461 const std::wstring& install_path, 469 const std::wstring& install_path,
462 const std::wstring& temp_dir, 470 const std::wstring& temp_dir,
463 const HKEY reg_root, 471 const HKEY reg_root,
464 const installer::Version& new_version, 472 const installer::Version& new_version,
465 std::wstring* current_version) { 473 std::wstring* current_version) {
466 if (reg_root != HKEY_LOCAL_MACHINE && reg_root != HKEY_CURRENT_USER) 474 if (reg_root != HKEY_LOCAL_MACHINE && reg_root != HKEY_CURRENT_USER)
467 return false; 475 return false;
468 476
469 #if defined(CHROME_FRAME_BUILD) 477 if (InstallUtil::IsChromeFrameProcess()) {
470 // Make sure that we don't end up deleting installed files on next reboot. 478 // Make sure that we don't end up deleting installed files on next reboot.
471 if (!RemoveFromMovesPendingReboot(install_path.c_str())) { 479 if (!RemoveFromMovesPendingReboot(install_path.c_str())) {
472 LOG(ERROR) << "Error accessing pending moves value."; 480 LOG(ERROR) << "Error accessing pending moves value.";
481 }
473 } 482 }
474 #endif
475 483
476 scoped_ptr<WorkItemList> install_list(WorkItem::CreateWorkItemList()); 484 scoped_ptr<WorkItemList> install_list(WorkItem::CreateWorkItemList());
477 // A temp directory that work items need and the actual install directory. 485 // A temp directory that work items need and the actual install directory.
478 install_list->AddCreateDirWorkItem(FilePath::FromWStringHack(temp_dir)); 486 install_list->AddCreateDirWorkItem(FilePath::FromWStringHack(temp_dir));
479 install_list->AddCreateDirWorkItem(FilePath::FromWStringHack(install_path)); 487 install_list->AddCreateDirWorkItem(FilePath::FromWStringHack(install_path));
480 488
481 // If it is system level install copy the version folder (since we want to 489 // If it is system level install copy the version folder (since we want to
482 // take the permissions of %ProgramFiles% folder) otherwise just move it. 490 // take the permissions of %ProgramFiles% folder) otherwise just move it.
483 if (reg_root == HKEY_LOCAL_MACHINE) { 491 if (reg_root == HKEY_LOCAL_MACHINE) {
484 install_list->AddCopyTreeWorkItem( 492 install_list->AddCopyTreeWorkItem(
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
649 } 657 }
650 658
651 std::wstring latest_version_to_keep(new_version.GetString()); 659 std::wstring latest_version_to_keep(new_version.GetString());
652 if (!current_version.empty()) 660 if (!current_version.empty())
653 latest_version_to_keep.assign(current_version); 661 latest_version_to_keep.assign(current_version);
654 RemoveOldVersionDirs(install_path, latest_version_to_keep); 662 RemoveOldVersionDirs(install_path, latest_version_to_keep);
655 } 663 }
656 664
657 return result; 665 return result;
658 } 666 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698