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

Unified Diff: chrome/installer/setup/setup_main.cc

Issue 1271893003: Add options to write version number to registry. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: extract registry overwrite to its own method Created 5 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/installer/util/util_constants.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/installer/setup/setup_main.cc
diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc
index 571964c0beab98ea45b0c5e66a36fb50c550f109..6345eaebf7552f4e30d9770d3de975cc9cb73547 100644
--- a/chrome/installer/setup/setup_main.cc
+++ b/chrome/installer/setup/setup_main.cc
@@ -80,6 +80,7 @@ using installer::Products;
const wchar_t kGoogleUpdatePipeName[] = L"\\\\.\\pipe\\GoogleCrashServices\\";
const wchar_t kSystemPrincipalSid[] = L"S-1-5-18";
+const wchar_t kDisplayVersion[] = L"DisplayVersion";
const MINIDUMP_TYPE kLargerDumpType = static_cast<MINIDUMP_TYPE>(
MiniDumpWithProcessThreadData | // Get PEB and TEB.
@@ -88,6 +89,26 @@ const MINIDUMP_TYPE kLargerDumpType = static_cast<MINIDUMP_TYPE>(
namespace {
+// Overwrite an existing DisplayVersion as written by the MSI installer
+// with the real version number of Chrome.
+LONG OverwriteDisplayVersion(base::string16 path, base::string16 value) {
robertshield 2015/08/08 04:32:38 pass by reference, no need to make a copy: const b
bcwhite 2015/08/13 16:25:58 Done.
+ base::win::RegKey key;
+ LONG result;
robertshield 2015/08/08 04:32:39 = 0
bcwhite 2015/08/13 16:25:58 Done.
+ std::wstring existing;
robertshield 2015/08/08 04:32:39 Should be able to use base::string16 here
bcwhite 2015/08/13 16:25:58 Done.
+ if ((result = key.Open(HKEY_LOCAL_MACHINE, path.c_str(),
+ KEY_QUERY_VALUE | KEY_SET_VALUE | KEY_WOW64_64KEY))
+ != ERROR_SUCCESS) {
+ return result;
+ }
+ if ((result = key.ReadValue(kDisplayVersion, &existing)) != ERROR_SUCCESS)
robertshield 2015/08/08 04:33:30 We should log to the installer log when the value
bcwhite 2015/08/13 16:25:58 Done.
+ return result;
robertshield 2015/08/08 04:32:39 It looks like we don't use the value of |existing|
bcwhite 2015/08/13 16:25:58 Done.
+ if ((result = key.WriteValue(kDisplayVersion, value.c_str()))
+ != ERROR_SUCCESS) {
+ return result;
+ }
+ return ERROR_SUCCESS;
+}
+
// Returns NULL if no compressed archive is available for processing, otherwise
// returns a patch helper configured to uncompress and patch.
scoped_ptr<installer::ArchivePatchHelper> CreateChromeArchiveHelper(
@@ -1152,6 +1173,14 @@ bool HandleNonInstallCmdLineOptions(const InstallationState& original_state,
bool updates_enabled = GoogleUpdateSettings::ReenableAutoupdates();
*exit_code = updates_enabled ? installer::REENABLE_UPDATES_SUCCEEDED :
installer::REENABLE_UPDATES_FAILED;
+ } else if (cmd_line.HasSwitch(installer::switches::kSetDisplayVersionPath)) {
+ const base::string16 registry_path(
+ cmd_line.GetSwitchValueNative(
+ installer::switches::kSetDisplayVersionPath));
+ const base::string16 registry_value(
+ cmd_line.GetSwitchValueNative(
+ installer::switches::kSetDisplayVersionValue));
+ *exit_code = OverwriteDisplayVersion(registry_path, registry_value);
} else {
handled = false;
}
@@ -1659,6 +1688,15 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE prev_instance,
if (installer::ContainsUnsupportedSwitch(cmd_line))
return installer::UNSUPPORTED_OPTION;
+ if (cmd_line.HasSwitch(installer::switches::kDelay)) {
robertshield 2015/08/08 04:32:39 Could this block be placed at the top of HandleNon
bcwhite 2015/08/13 16:25:58 Done.
+ std::string delay_seconds_string(
robertshield 2015/08/08 04:32:38 const
bcwhite 2015/08/13 16:25:58 Done.
+ cmd_line.GetSwitchValueASCII(installer::switches::kDelay));
+ int delay_seconds = std::stoi(delay_seconds_string);
robertshield 2015/08/08 04:32:38 Most code I see uses base::StringToInt rather than
bcwhite 2015/08/13 16:25:58 Done.
+ if (delay_seconds > 0) {
+ ::Sleep(delay_seconds * 1000);
+ }
+ }
+
// A variety of installer operations require the path to the current
// executable. Get it once here for use throughout these operations. Note that
// the path service is the authoritative source for this path. One might think
« no previous file with comments | « no previous file | chrome/installer/util/util_constants.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698