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

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

Issue 14031025: Implementing unified Chrome / App Launcher flow, and migrating old stand-alone App Launcher. (Closed) Base URL: http://chromium.googlesource.com/chromium/src.git@master
Patch Set: Removing Start Menu root stuff; cleanups. Created 7 years, 7 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/setup_main.cc
diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc
index 70832b641e8244870b3d7785a7b632ca9a23f607..5cfc45662638018bddd2108dc7c5aee431a38b05 100644
--- a/chrome/installer/setup/setup_main.cc
+++ b/chrome/installer/setup/setup_main.cc
@@ -484,30 +484,19 @@ bool CheckMultiInstallConditions(const InstallationState& original_state,
}
// Checks app host pre-install conditions, specifically that this is a
-// user-level multi-install. When the pre-install conditions are not
-// satisfied, the result is written to the registry (via WriteInstallerResult),
-// |status| is set appropriately, and false is returned.
-bool CheckAppHostPreconditions(const InstallationState& original_state,
- InstallerState* installer_state,
- installer::InstallStatus* status) {
- if (installer_state->FindProduct(BrowserDistribution::CHROME_APP_HOST)) {
-
- if (!installer_state->is_multi_install()) {
- LOG(DFATAL) << "App Launcher requires multi install";
- *status = installer::APP_HOST_REQUIRES_MULTI_INSTALL;
- // No message string since there is nothing a user can do.
- installer_state->WriteInstallerResult(*status, 0, NULL);
- return false;
- }
-
- if (installer_state->system_install()) {
- LOG(DFATAL) << "App Launcher may only be installed at user-level.";
- *status = installer::APP_HOST_REQUIRES_USER_LEVEL;
- // No message string since there is nothing a user can do.
- installer_state->WriteInstallerResult(*status, 0, NULL);
- return false;
- }
-
+// multi-install. When the pre-install conditions are not satisfied, the result
+// is written to the registry (via WriteInstallerResult), |status| is set
+// appropriately, and false is returned.
+bool CheckAppLauncherPreconditions(const InstallationState& original_state,
+ InstallerState* installer_state,
+ installer::InstallStatus* status) {
+ if (installer_state->FindProduct(BrowserDistribution::CHROME_APP_HOST) &&
+ !installer_state->is_multi_install()) {
+ LOG(DFATAL) << "App Launcher requires multi install";
+ *status = installer::APP_HOST_REQUIRES_MULTI_INSTALL;
+ // No message string since there is nothing a user can do.
+ installer_state->WriteInstallerResult(*status, 0, NULL);
+ return false;
}
return true;
@@ -525,7 +514,7 @@ bool CheckAppHostPreconditions(const InstallationState& original_state,
bool CheckPreInstallConditions(const InstallationState& original_state,
InstallerState* installer_state,
installer::InstallStatus* status) {
- if (!CheckAppHostPreconditions(original_state, installer_state, status)) {
+ if (!CheckAppLauncherPreconditions(original_state, installer_state, status)) {
DCHECK_NE(*status, installer::UNKNOWN_STATUS);
return false;
}
@@ -573,6 +562,26 @@ bool CheckPreInstallConditions(const InstallationState& original_state,
if (user_level_product_state)
continue;
+ if (system_level_product_state &&
+ installer_state->need_to_migrate_legacy_app_launcher()) {
+ // This is called if we we have (old) user app_host.exe coexisting with
+ // (new) system-level Chrome, and then the app_host.exe is executed.
+ // app_host.exe detects system-level Chrome, and calls new setup.exe
+ // with --app-launcher (and arrive to this point). We now call the old
+ // setup.exe to uninstall the old stuff.
+ CommandLine uninstall_cmd(InstallUtil::GetChromeUninstallCmd(
+ false, BrowserDistribution::CHROME_APP_HOST));
+ if (!uninstall_cmd.GetProgram().empty()) {
+ uninstall_cmd.AppendSwitch(installer::switches::kSelfDestruct);
+ uninstall_cmd.AppendSwitch(installer::switches::kForceUninstall);
+ uninstall_cmd.AppendSwitch(
+ installer::switches::kDoNotRemoveSharedItems);
+ base::LaunchProcess(uninstall_cmd, base::LaunchOptions(), NULL);
+ }
+ *status = installer::APP_HOST_SELF_DESTRUCT;
+ return false;
+ }
huangs 2013/06/04 13:50:31 TODO: Add comment to state that google_update::Uni
+
// This is a new user-level install...
if (system_level_product_state) {

Powered by Google App Engine
This is Rietveld 408576698