diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index 70ea333..a86876c 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -1111,6 +1111,7 @@ function install_select_profile(&$install_state) {
  * 3. A discovered profile that is a distribution.
  *    If multiple profiles are distributions, then the first discovered profile
  *    will be selected.
+ * 4. Only one visible profile is available.
  *
  * @param array $install_state
  *   The current installer state, containing a 'profiles' key, which is an
@@ -1138,6 +1139,16 @@ function _install_select_profile(&$install_state) {
       return $profile->getName();
     }
   }
+
+  // Get all visible (not hidden) profiles.
+  $visible_profiles = array_filter($install_state['profiles'], function ($profile) {
+    $profile_info = install_profile_info($profile->getName());
+    return !isset($profile_info['hidden']) || !$profile_info['hidden'];
+  });
+
+  if (count($visible_profiles) == 1) {
+    return (key($visible_profiles));
+  }
 }
 
 /**
