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

Side by Side Diff: chrome/browser/first_run/first_run_internal_win.cc

Issue 208393020: Fix the new First Run sentinel file path determination. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Simplify changes. Created 6 years, 9 months 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) 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/browser/first_run/first_run_internal.h" 5 #include "chrome/browser/first_run/first_run_internal.h"
6 6
7 #include <windows.h> 7 #include <windows.h>
8 #include <shellapi.h> 8 #include <shellapi.h>
9 9
10 #include "base/base_paths.h" 10 #include "base/base_paths.h"
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 if (!PathService::Get(base::FILE_EXE, &chrome_exe)) { 138 if (!PathService::Get(base::FILE_EXE, &chrome_exe)) {
139 NOTREACHED(); 139 NOTREACHED();
140 } else if (!InstallUtil::IsPerUserInstall(chrome_exe.value().c_str())) { 140 } else if (!InstallUtil::IsPerUserInstall(chrome_exe.value().c_str())) {
141 content::BrowserThread::GetBlockingPool()->PostDelayedTask( 141 content::BrowserThread::GetBlockingPool()->PostDelayedTask(
142 FROM_HERE, 142 FROM_HERE,
143 base::Bind(&InstallUtil::TriggerActiveSetupCommand), 143 base::Bind(&InstallUtil::TriggerActiveSetupCommand),
144 base::TimeDelta::FromSeconds(kTiggerActiveSetupDelaySeconds)); 144 base::TimeDelta::FromSeconds(kTiggerActiveSetupDelaySeconds));
145 } 145 }
146 } 146 }
147 147
148 bool GetFirstRunSentinelFilePath(base::FilePath* path) { 148 bool IsFirstRunSentinelPresent() {
149 return InstallUtil::GetSentinelFilePath( 149 base::FilePath sentinel;
150 chrome::kFirstRunSentinel, BrowserDistribution::GetDistribution(), path); 150 if (!GetFirstRunSentinelFilePath(&sentinel) || base::PathExists(sentinel))
151 } 151 return true;
152 152
153 bool GetLegacyFirstRunSentinelFilePath(base::FilePath* path) { 153 // Copy any legacy first run sentinel file for Windows user-level installs
154 // The first run sentinel for user-level installs on Windows used to 154 // from the application directory to the user data directory.
155 // be in the application directory.
156 base::FilePath exe_path; 155 base::FilePath exe_path;
157 if (!PathService::Get(base::DIR_EXE, &exe_path) || 156 if (PathService::Get(base::DIR_EXE, &exe_path) &&
158 !InstallUtil::IsPerUserInstall(exe_path.value().c_str())) { 157 InstallUtil::IsPerUserInstall(exe_path.value().c_str())) {
159 return false; 158 base::FilePath legacy_sentinel = exe_path.Append(chrome::kFirstRunSentinel);
159 if (base::PathExists(legacy_sentinel)) {
160 // Copy the file instead of moving it to avoid breaking developer builds
161 // where the sentinel is dropped beside chrome.exe by a build action.
162 bool migrated = base::CopyFile(legacy_sentinel, sentinel);
163 DPCHECK(migrated);
164 return true;
grt (UTC plus 2) 2014/03/27 15:35:20 please preserve this comment from first_run.cc: //
msw 2014/03/28 00:04:11 Done.
165 }
160 } 166 }
161 *path = exe_path.Append(chrome::kFirstRunSentinel); 167
162 return true; 168 return false;
163 } 169 }
164 170
165 bool ShowPostInstallEULAIfNeeded(installer::MasterPreferences* install_prefs) { 171 bool ShowPostInstallEULAIfNeeded(installer::MasterPreferences* install_prefs) {
166 if (IsEULANotAccepted(install_prefs)) { 172 if (IsEULANotAccepted(install_prefs)) {
167 // Show the post-installation EULA. This is done by setup.exe and the 173 // Show the post-installation EULA. This is done by setup.exe and the
168 // result determines if we continue or not. We wait here until the user 174 // result determines if we continue or not. We wait here until the user
169 // dismisses the dialog. 175 // dismisses the dialog.
170 176
171 // The actual eula text is in a resource in chrome. We extract it to 177 // The actual eula text is in a resource in chrome. We extract it to
172 // a text file so setup.exe can use it as an inner frame. 178 // a text file so setup.exe can use it as an inner frame.
(...skipping 23 matching lines...) Expand all
196 base::FilePath MasterPrefsPath() { 202 base::FilePath MasterPrefsPath() {
197 // The standard location of the master prefs is next to the chrome binary. 203 // The standard location of the master prefs is next to the chrome binary.
198 base::FilePath master_prefs; 204 base::FilePath master_prefs;
199 if (!PathService::Get(base::DIR_EXE, &master_prefs)) 205 if (!PathService::Get(base::DIR_EXE, &master_prefs))
200 return base::FilePath(); 206 return base::FilePath();
201 return master_prefs.AppendASCII(installer::kDefaultMasterPrefs); 207 return master_prefs.AppendASCII(installer::kDefaultMasterPrefs);
202 } 208 }
203 209
204 } // namespace internal 210 } // namespace internal
205 } // namespace first_run 211 } // namespace first_run
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698