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

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

Issue 2507753002: Install the chrome event log provider together with the browser. (Closed)
Patch Set: . Created 4 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
OLDNEW
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 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 reg_path.append(installer::kChromeExe); 135 reg_path.append(installer::kChromeExe);
136 VLOG(1) << "Adding Chrome to Media player list at " << reg_path; 136 VLOG(1) << "Adding Chrome to Media player list at " << reg_path;
137 std::unique_ptr<WorkItem> work_item(WorkItem::CreateCreateRegKeyWorkItem( 137 std::unique_ptr<WorkItem> work_item(WorkItem::CreateCreateRegKeyWorkItem(
138 HKEY_LOCAL_MACHINE, reg_path, WorkItem::kWow64Default)); 138 HKEY_LOCAL_MACHINE, reg_path, WorkItem::kWow64Default));
139 139
140 // if the operation fails we log the error but still continue 140 // if the operation fails we log the error but still continue
141 if (!work_item.get()->Do()) 141 if (!work_item.get()->Do())
142 LOG(ERROR) << "Could not add Chrome to media player inclusion list."; 142 LOG(ERROR) << "Could not add Chrome to media player inclusion list.";
143 } 143 }
144 144
145 void RegisterChromesEventlogProvider(const base::FilePath& chrome_exe) {
grt (UTC plus 2) 2016/11/16 15:04:44 nit: RegisterChromeEventLogProvider or maybe just
grt (UTC plus 2) 2016/11/16 15:04:44 i think it makes sense to move this into setup_uti
pastarmovj 2016/11/17 15:34:42 Done.
pastarmovj 2016/11/17 15:34:43 Done.
146 base::string16 reg_path(installer::kEventlogProvidersRegPath);
147 // registry paths can also be appended like file system path
148 reg_path.push_back(base::FilePath::kSeparators[0]);
149 reg_path.append(installer::kChromeEventLogProviderName);
150 VLOG(1) << "Registering Chrome's event log provider at " << reg_path;
grt (UTC plus 2) 2016/11/16 15:04:44 nit: remove extra space in log message
pastarmovj 2016/11/17 15:34:42 Done.
151 std::unique_ptr<WorkItem> work_item(WorkItem::CreateCreateRegKeyWorkItem(
grt (UTC plus 2) 2016/11/16 15:04:44 rather than creating and using individual items li
pastarmovj 2016/11/17 15:34:43 Done. You are right that those make sense only as
152 HKEY_LOCAL_MACHINE, reg_path, WorkItem::kWow64Default));
153
154 // if the operation fails we log the error but still continue because none of
155 // these are critical for the proper operation of the browser.
156 if (!work_item.get()->Do()) {
157 LOG(ERROR) << "Could not register Chrome's event log provider. "
158 << "Failed to create registry key: " << reg_path << ".";
159 return;
160 }
161
162 work_item.reset(WorkItem::CreateSetRegValueWorkItem(
163 HKEY_LOCAL_MACHINE, reg_path, WorkItem::kWow64Default,
164 installer::kCategoryCount, static_cast<DWORD>(1), true));
165 if (!work_item.get()->Do()) {
166 LOG(ERROR) << "Could not register Chrome's event log provider. "
167 << "Failed to set registry value: " << installer::kCategoryCount
168 << ".";
169 }
170 work_item.reset(WorkItem::CreateSetRegValueWorkItem(
171 HKEY_LOCAL_MACHINE, reg_path, WorkItem::kWow64Default,
172 installer::kTypesSupported, static_cast<DWORD>(7), true));
173 if (!work_item.get()->Do()) {
174 LOG(ERROR) << "Could not register Chrome's event log provider. "
175 << "Failed to set registry value: " << installer::kTypesSupported
176 << ".";
177 }
178
179 const wchar_t* const file_keys[] = {
grt (UTC plus 2) 2016/11/16 15:04:44 nit: static constexpr const wchar_t* kFileKeys[] =
pastarmovj 2016/11/17 15:34:43 Done.
180 installer::kCategoryMessageFile,
181 installer::kEventMessageFile,
182 installer::kParameterMessageFile,
183 };
184 for (int i = 0; i < arraysize(file_keys); ++i) {
grt (UTC plus 2) 2016/11/16 15:04:44 nit: for (const wchar_t* file_key : file_keys) {
pastarmovj 2016/11/17 15:34:43 Done.
185 work_item.reset(WorkItem::CreateSetRegValueWorkItem(
186 HKEY_LOCAL_MACHINE, reg_path, WorkItem::kWow64Default,
187 file_keys[i], chrome_exe.value(), true));
188 if (!work_item.get()->Do()) {
189 LOG(ERROR) << "Could not register Chrome's event log provider. "
190 << "Failed to set registry value: " << file_keys[i] << ".";
191 }
192 }
193 }
194
145 // Copy master_preferences file provided to installer, in the same folder 195 // Copy master_preferences file provided to installer, in the same folder
146 // as chrome.exe so Chrome first run can find it. This function will be called 196 // as chrome.exe so Chrome first run can find it. This function will be called
147 // only on the first install of Chrome. 197 // only on the first install of Chrome.
148 void CopyPreferenceFileForFirstRun( 198 void CopyPreferenceFileForFirstRun(
149 const installer::InstallerState& installer_state, 199 const installer::InstallerState& installer_state,
150 const base::FilePath& prefs_source_path) { 200 const base::FilePath& prefs_source_path) {
151 base::FilePath prefs_dest_path(installer_state.target_path().AppendASCII( 201 base::FilePath prefs_dest_path(installer_state.target_path().AppendASCII(
152 installer::kDefaultMasterPrefs)); 202 installer::kDefaultMasterPrefs));
153 if (!base::CopyFile(prefs_source_path, prefs_dest_path)) { 203 if (!base::CopyFile(prefs_source_path, prefs_dest_path)) {
154 VLOG(1) << "Failed to copy master preferences from:" 204 VLOG(1) << "Failed to copy master preferences from:"
(...skipping 281 matching lines...) Expand 10 before | Expand all | Expand 10 after
436 ExecuteAndLogShortcutOperation( 486 ExecuteAndLogShortcutOperation(
437 ShellUtil::SHORTCUT_LOCATION_START_MENU_ROOT, dist, 487 ShellUtil::SHORTCUT_LOCATION_START_MENU_ROOT, dist,
438 start_menu_properties, shortcut_operation); 488 start_menu_properties, shortcut_operation);
439 } 489 }
440 490
441 void RegisterChromeOnMachine(const installer::InstallerState& installer_state, 491 void RegisterChromeOnMachine(const installer::InstallerState& installer_state,
442 const installer::Product& product, 492 const installer::Product& product,
443 bool make_chrome_default) { 493 bool make_chrome_default) {
444 DCHECK(product.is_chrome()); 494 DCHECK(product.is_chrome());
445 495
496 const base::FilePath chrome_exe(
497 installer_state.target_path().Append(installer::kChromeExe));
498
446 // Try to add Chrome to Media Player shim inclusion list. We don't do any 499 // Try to add Chrome to Media Player shim inclusion list. We don't do any
447 // error checking here because this operation will fail if user doesn't 500 // error checking here because this operation will fail if user doesn't
448 // have admin rights and we want to ignore the error. 501 // have admin rights and we want to ignore the error.
449 AddChromeToMediaPlayerList(); 502 AddChromeToMediaPlayerList();
450 503
504 // Try to register the event log provider for Chrome, but only if it is a
505 // system profile because this step admin privileges.
506 if (installer_state.system_install())
507 RegisterChromesEventlogProvider(chrome_exe);
508
451 // Make Chrome the default browser if desired when possible. Otherwise, only 509 // Make Chrome the default browser if desired when possible. Otherwise, only
452 // register it with Windows. 510 // register it with Windows.
453 BrowserDistribution* dist = product.distribution(); 511 BrowserDistribution* dist = product.distribution();
454 const base::FilePath chrome_exe(
455 installer_state.target_path().Append(installer::kChromeExe));
456 VLOG(1) << "Registering Chrome as browser: " << chrome_exe.value(); 512 VLOG(1) << "Registering Chrome as browser: " << chrome_exe.value();
457 if (make_chrome_default && ShellUtil::CanMakeChromeDefaultUnattended()) { 513 if (make_chrome_default && ShellUtil::CanMakeChromeDefaultUnattended()) {
458 int level = ShellUtil::CURRENT_USER; 514 int level = ShellUtil::CURRENT_USER;
459 if (installer_state.system_install()) 515 if (installer_state.system_install())
460 level = level | ShellUtil::SYSTEM_LEVEL; 516 level = level | ShellUtil::SYSTEM_LEVEL;
461 ShellUtil::MakeChromeDefault(dist, level, chrome_exe, true); 517 ShellUtil::MakeChromeDefault(dist, level, chrome_exe, true);
462 } else { 518 } else {
463 ShellUtil::RegisterChromeBrowser(dist, chrome_exe, base::string16(), false); 519 ShellUtil::RegisterChromeBrowser(dist, chrome_exe, base::string16(), false);
464 } 520 }
465 } 521 }
(...skipping 251 matching lines...) Expand 10 before | Expand all | Expand 10 after
717 // Read master_preferences copied beside chrome.exe at install. 773 // Read master_preferences copied beside chrome.exe at install.
718 MasterPreferences prefs(installation_root.AppendASCII(kDefaultMasterPrefs)); 774 MasterPreferences prefs(installation_root.AppendASCII(kDefaultMasterPrefs));
719 base::FilePath chrome_exe(installation_root.Append(kChromeExe)); 775 base::FilePath chrome_exe(installation_root.Append(kChromeExe));
720 CreateOrUpdateShortcuts( 776 CreateOrUpdateShortcuts(
721 chrome_exe, chrome, prefs, CURRENT_USER, install_operation); 777 chrome_exe, chrome, prefs, CURRENT_USER, install_operation);
722 778
723 UpdateDefaultBrowserBeaconForPath(chrome_exe); 779 UpdateDefaultBrowserBeaconForPath(chrome_exe);
724 } 780 }
725 781
726 } // namespace installer 782 } // namespace installer
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698