| Index: chrome/installer/setup/setup_main.cc
|
| diff --git a/chrome/installer/setup/setup_main.cc b/chrome/installer/setup/setup_main.cc
|
| index 3799bf282ad8de2d7a22a97ad218b620805d713c..a7fcfaea4f3bb1dd064f80010593d4a202218b7b 100644
|
| --- a/chrome/installer/setup/setup_main.cc
|
| +++ b/chrome/installer/setup/setup_main.cc
|
| @@ -45,12 +45,14 @@
|
| #include "chrome/common/chrome_constants.h"
|
| #include "chrome/common/chrome_paths.h"
|
| #include "chrome/common/chrome_switches.h"
|
| +#include "chrome/install_static/install_details.h"
|
| #include "chrome/installer/setup/archive_patch_helper.h"
|
| #include "chrome/installer/setup/install.h"
|
| #include "chrome/installer/setup/install_worker.h"
|
| #include "chrome/installer/setup/installer_crash_reporting.h"
|
| #include "chrome/installer/setup/persistent_histogram_storage.h"
|
| #include "chrome/installer/setup/setup_constants.h"
|
| +#include "chrome/installer/setup/setup_install_details.h"
|
| #include "chrome/installer/setup/setup_singleton.h"
|
| #include "chrome/installer/setup/setup_util.h"
|
| #include "chrome/installer/setup/uninstall.h"
|
| @@ -1704,6 +1706,8 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE prev_instance,
|
| InstallerState installer_state;
|
| installer_state.Initialize(cmd_line, prefs, original_state);
|
|
|
| + InitializeInstallDetails(cmd_line, prefs, installer_state);
|
| +
|
| persistent_histogram_storage.set_storage_dir(
|
| installer::PersistentHistogramStorage::GetReportedStorageDir(
|
| installer_state.target_path()));
|
| @@ -1737,18 +1741,22 @@ int WINAPI wWinMain(HINSTANCE instance, HINSTANCE prev_instance,
|
| return installer::OS_ERROR;
|
| }
|
|
|
| - // Some command line options don't work with SxS install/uninstall
|
| - if (InstallUtil::IsChromeSxSProcess()) {
|
| - if (system_install ||
|
| - prefs.is_multi_install() ||
|
| - cmd_line.HasSwitch(installer::switches::kSelfDestruct) ||
|
| - cmd_line.HasSwitch(installer::switches::kMakeChromeDefault) ||
|
| - cmd_line.HasSwitch(installer::switches::kRegisterChromeBrowser) ||
|
| - cmd_line.HasSwitch(installer::switches::kRemoveChromeRegistration) ||
|
| - cmd_line.HasSwitch(installer::switches::kInactiveUserToast) ||
|
| - cmd_line.HasSwitch(installer::switches::kSystemLevelToast)) {
|
| - return installer::SXS_OPTION_NOT_SUPPORTED;
|
| - }
|
| + const install_static::InstallDetails& install_details =
|
| + install_static::InstallDetails::Get();
|
| + // Make sure multi_install and/or system_level are supported if requested.
|
| + if ((prefs.is_multi_install() && !install_details.supports_multi_install()) ||
|
| + (system_install && !install_details.supports_system_level())) {
|
| + return installer::SXS_OPTION_NOT_SUPPORTED;
|
| + }
|
| + // Some command line options don't work with secondary installs.
|
| + if (install_details.install_mode_index() != 0 &&
|
| + (cmd_line.HasSwitch(installer::switches::kSelfDestruct) ||
|
| + cmd_line.HasSwitch(installer::switches::kMakeChromeDefault) ||
|
| + cmd_line.HasSwitch(installer::switches::kRegisterChromeBrowser) ||
|
| + cmd_line.HasSwitch(installer::switches::kRemoveChromeRegistration) ||
|
| + cmd_line.HasSwitch(installer::switches::kInactiveUserToast) ||
|
| + cmd_line.HasSwitch(installer::switches::kSystemLevelToast))) {
|
| + return installer::SXS_OPTION_NOT_SUPPORTED;
|
| }
|
|
|
| // Some command line options are no longer supported and must error out.
|
|
|