Index: chrome/installer/util/install_util.cc |
diff --git a/chrome/installer/util/install_util.cc b/chrome/installer/util/install_util.cc |
index db710d47d9f85fb116098574e5d5bca6a9f4be7f..d98a30b5037145aefa3fcc425c4044ab3cbb8e20 100644 |
--- a/chrome/installer/util/install_util.cc |
+++ b/chrome/installer/util/install_util.cc |
@@ -23,6 +23,7 @@ |
#include "base/sys_info.h" |
#include "base/values.h" |
#include "base/version.h" |
+#include "base/win/metro.h" |
#include "base/win/registry.h" |
#include "base/win/windows_version.h" |
#include "chrome/installer/util/browser_distribution.h" |
@@ -126,14 +127,7 @@ string16 InstallUtil::GetActiveSetupPath(BrowserDistribution* dist) { |
return kInstalledComponentsPath + dist->GetAppGuid(); |
} |
-void InstallUtil::TriggerActiveSetupCommandIfNeeded() { |
- FilePath chrome_exe; |
- if (!PathService::Get(base::FILE_EXE, &chrome_exe)) { |
- NOTREACHED(); |
- } else if (InstallUtil::IsPerUserInstall(chrome_exe.value().c_str())) { |
- return; |
- } |
- |
+void InstallUtil::TriggerActiveSetupCommand() { |
string16 active_setup_reg( |
GetActiveSetupPath(BrowserDistribution::GetDistribution())); |
base::win::RegKey active_setup_key( |
@@ -152,8 +146,10 @@ void InstallUtil::TriggerActiveSetupCommandIfNeeded() { |
// and the time setup.exe checks for it. |
cmd.AppendSwitch(installer::switches::kForceConfigureUserSettings); |
- base::LaunchOptions default_options; |
- if (!base::LaunchProcess(cmd.GetCommandLineString(), default_options, NULL)) |
+ base::LaunchOptions launch_options; |
+ if (base::win::IsMetroProcess()) |
+ launch_options.force_breakaway_from_job_ = true; |
+ if (!base::LaunchProcess(cmd.GetCommandLineString(), launch_options, NULL)) |
PLOG(ERROR) << cmd.GetCommandLineString(); |
} |