Chromium Code Reviews| Index: chrome/installer/setup/installer_state.cc |
| diff --git a/chrome/installer/setup/installer_state.cc b/chrome/installer/setup/installer_state.cc |
| index 17ad861605e25984979ea73caf1f70eb05999456..3e7dde64eb23e23b91b8b9d0dfbccbb9f2ddaba9 100644 |
| --- a/chrome/installer/setup/installer_state.cc |
| +++ b/chrome/installer/setup/installer_state.cc |
| @@ -73,7 +73,8 @@ InstallerState::InstallerState() |
| root_key_(NULL), |
| msi_(false), |
| background_mode_(false), |
| - verbose_logging_(false) {} |
| + verbose_logging_(false), |
| + is_migrating_to_single_(false) {} |
| InstallerState::InstallerState(Level level) |
| : operation_(UNINITIALIZED), |
| @@ -84,7 +85,8 @@ InstallerState::InstallerState(Level level) |
| root_key_(NULL), |
| msi_(false), |
| background_mode_(false), |
| - verbose_logging_(false) { |
| + verbose_logging_(false), |
| + is_migrating_to_single_(false) { |
| // Use set_level() so that root_key_ is updated properly. |
| set_level(level); |
| } |
| @@ -138,6 +140,10 @@ void InstallerState::Initialize(const base::CommandLine& command_line, |
| // For a single-install, the current browser dist is the operand. |
| operand = BrowserDistribution::GetDistribution(); |
| operation_ = SINGLE_INSTALL_OR_UPDATE; |
| + // Is this a migration from multi-install to single-install? |
| + const ProductState* state = |
| + machine_state.GetProductState(system_install(), operand->GetType()); |
| + is_migrating_to_single_ = state && state->is_multi_install(); |
| } else if (IsMultiInstallUpdate(prefs, machine_state)) { |
| // Updates driven by Google Update take place under the multi-installer's |
| // app guid. |
| @@ -473,6 +479,7 @@ void InstallerState::Clear() { |
| root_key_ = NULL; |
| msi_ = false; |
| verbose_logging_ = false; |
| + is_migrating_to_single_ = false; |
| } |
| bool InstallerState::AnyExistsAndIsInUse(const InstallationState& machine_state, |
| @@ -625,6 +632,16 @@ void InstallerState::WriteInstallerResult( |
| InstallUtil::AddInstallerResultItems( |
| system_install, multi_package_binaries_distribution()->GetStateKey(), |
| status, string_resource_id, launch_cmd, install_list.get()); |
| + } else if (is_migrating_to_single()) { |
|
gab
2016/12/12 21:38:16
Wait... my assumptions are breaking down... so we
grt (UTC plus 2)
2016/12/13 09:20:37
No, we can't be in multi_install anymore -- the bl
|
| + // Also write to the binaries if this is a migration back to single-install. |
| + // Writing in both locations ensures that Google Update will pick up the |
| + // results regardless of whether this migration originates from Chrome's or |
| + // from the binaries' update config. |
| + InstallUtil::AddInstallerResultItems( |
| + system_install, BrowserDistribution::GetSpecificDistribution( |
| + BrowserDistribution::CHROME_BINARIES) |
| + ->GetStateKey(), |
| + status, string_resource_id, launch_cmd, install_list.get()); |
| } |
| install_list->Do(); |
| } |