\Drupal\Core\Installer\Form\SiteConfigureForm::submitForm() used to set the install_time state variable once the final stage of the interactive installer form was completed. This was fragile, since sites could alter this form, or be installed without using a form at all (for example, via drush site-install, etc). The state variable is now set during the install_finished() function, which is invoked via all the code paths when Drupal is finally installed.
This change means that the SiteConfigureForm no longer needs the state service injected. The arguments to the constructor for this form object have changed accordingly. Previously, it took the following 6 arguments:
* @param string $root
* The app root.
* @param string $site_path
* The site path.
* @param \Drupal\user\UserStorageInterface $user_storage
* The user storage.
* @param \Drupal\Core\State\StateInterface $state
* The state service.
* @param \Drupal\Core\Extension\ModuleInstallerInterface $module_installer
* The module installer.
* @param \Drupal\Core\Locale\CountryManagerInterface $country_manager
* The country manager.
Now, it only takes these 5 arguments:
* @param string $root
* The app root.
* @param string $site_path
* The site path.
* @param \Drupal\user\UserStorageInterface $user_storage
* The user storage.
* @param \Drupal\Core\Extension\ModuleInstallerInterface $module_installer
* The module installer.
* @param \Drupal\Core\Locale\CountryManagerInterface $country_manager
* The country manager.
Invoking the constructor with the original 6 arguments is now deprecated. There is a backwards compatibility layer to notice the old signature and use it, but this will trigger a deprecation notice. Any code instantiating this form object directly should remove the 'state' parameter before Drupal 10.0.0. At that point, the compatibility layer will be removed, the constructor signature will ensure that a ModuleInstallerInterface parameter is the 4th argument, and any code passing a StateInterface parameter in its place will begin to fail.