diff --git a/core/lib/Drupal/Core/Render/BareHtmlPageRenderer.php b/core/lib/Drupal/Core/Render/BareHtmlPageRenderer.php
index a8904e6f1fcc82436a063d06b41a835c4e253b0f..d744e1918a8e56c192b5d9f83b2487955087d6f5 100644
--- a/core/lib/Drupal/Core/Render/BareHtmlPageRenderer.php
+++ b/core/lib/Drupal/Core/Render/BareHtmlPageRenderer.php
@@ -74,6 +74,10 @@ protected function renderBarePage(array $content, $title, array $page_additions,
     // information about this; the exact same pattern is used there and
     // explained in detail there.
     drupal_render_root($html['page']);
+
+    // Add the bare minimum of attachments from the system module and the
+    // current maintenance theme.
+    system_page_attachments($html['page']);
     return drupal_render($html);
   }
 
diff --git a/core/modules/system/src/Tests/Installer/InstallerTest.php b/core/modules/system/src/Tests/Installer/InstallerTest.php
index 6d481236e1d83043882b8516a1b04723c7130058..876e0652eb88bb3d2e6c4e3c22321bc67786c1c8 100644
--- a/core/modules/system/src/Tests/Installer/InstallerTest.php
+++ b/core/modules/system/src/Tests/Installer/InstallerTest.php
@@ -32,4 +32,14 @@ public function testInstaller() {
     )));
   }
 
+  /**
+   * Installer step: Select language.
+   */
+  protected function setUpLanguage() {
+    // Test that \Drupal\Core\Render\BareHtmlPageRenderer adds assets and
+    // metatags as expected to the first page of the installer.
+    $this->assertRaw('core/themes/seven/css/components/buttons.css');
+    $this->assertRaw('<meta name="charset" charset="utf-8" />');
+    parent::setUpLanguage();
+  }
 }