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

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

Issue 10823437: Callback flow to register Chrome and update shortcuts after OS upgrade to Windows 8 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Reimplementing registry changes using AppCommand; adding checks in InstallationValidator. Created 8 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
Index: chrome/installer/setup/install_worker.cc
diff --git a/chrome/installer/setup/install_worker.cc b/chrome/installer/setup/install_worker.cc
index 43ce81a1676efa5126c00999bd3bd8c73bbfaafc..4e0e79a2f87ac55e1f8c576c9c4c1c6bb5554f33 100644
--- a/chrome/installer/setup/install_worker.cc
+++ b/chrome/installer/setup/install_worker.cc
@@ -319,6 +319,15 @@ void AddProductSpecificWorkItems(const InstallationState& original_state,
AddInstallAppCommandWorkItems(installer_state, original_state,
&setup_path, &new_version, p, list);
}
+ if (p.is_chrome()) {
+ // In Chrome Browser, add registry entries so that when an OS upgrade
+ // occurs, Google Update will call setup.exe with --on-os-upgrade switch,
+ // which leads to ChromeBrowserOnOsUpgrade() being called.
+ CommandLine cmd_line(CommandLine::NO_PROGRAM);
+ RenderChromeBrowserOsUpgradeCommand(installer_state, setup_path,
+ new_version, &cmd_line);
+ AddOsUpgradeWorkItems(original_state, installer_state, p, cmd_line, list);
+ }
}
}
@@ -1593,4 +1602,41 @@ void AddQuickEnableApplicationHostWorkItems(
kCmdQuickEnableApplicationHost);
}
+void RenderChromeBrowserOsUpgradeCommand(
gab 2012/08/28 16:08:19 s/Render/Get
gab 2012/08/28 16:08:19 Remove "ChromeBrowser" from function name
grt (UTC plus 2) 2012/08/28 19:35:39 suggestion: you can make this product-independent
huangs 2012/08/29 17:02:54 Took grt@'s approach.
+ const InstallerState& installer_state,
+ const FilePath& setup_path,
+ const Version& new_version,
+ CommandLine* cmd_line) {
+ FilePath installer_path(installer_state
+ .GetInstallerDirectory(new_version).Append(setup_path.BaseName()));
+ cmd_line->SetProgram(installer_path);
+ cmd_line->AppendSwitch(installer::switches::kOnOsUpgrade);
+ cmd_line->AppendSwitch(installer::switches::kChrome);
gab 2012/08/28 16:08:19 nit: unindent 2 spaces
huangs 2012/08/29 17:02:54 Done.
+ if (installer_state.system_install())
+ cmd_line->AppendSwitch(installer::switches::kSystemLevel);
+ if (installer_state.is_multi_install())
+ cmd_line->AppendSwitch(installer::switches::kMultiInstall);
+ if (installer_state.verbose_logging())
+ cmd_line->AppendSwitch(installer::switches::kVerboseLogging);
+}
+
+void AddOsUpgradeWorkItems(const InstallationState& original_state,
+ const InstallerState& installer_state,
+ const Product& product,
+ const CommandLine& cmd_line,
+ WorkItemList* install_list) {
+ const HKEY root_key = installer_state.root_key();
+ std::wstring cmd_key(product.distribution()->GetVersionKey());
gab 2012/08/28 16:08:19 std::wstring -> string16
huangs 2012/08/29 17:02:54 Done. Also replacing everywhere else in file. On
+ cmd_key.append(1, L'\\').append(google_update::kRegCommandsKey)
gab 2012/08/28 16:08:19 use .push_back(FilePath::kSeparators[0]) instead o
huangs 2012/08/29 17:02:54 Okay, but .push_back() returns void, and cannot be
+ .append(1, L'\\').append(kCmdOnOsUpgrade);
+ if (installer_state.operation() != InstallerState::UNINSTALL) {
+ install_list->set_log_message("Adding OS upgrade command");
+ AppCommand cmd(cmd_line.GetCommandLineString(), false, false, true);
+ cmd.AddWorkItems(installer_state.root_key(), cmd_key, install_list);
+ } else {
+ install_list->set_log_message("Removing OS upgrade command");
+ install_list->AddDeleteRegKeyWorkItem(root_key, cmd_key);
+ }
+}
+
} // namespace installer

Powered by Google App Engine
This is Rietveld 408576698