diff --git a/core/includes/install.core.inc b/core/includes/install.core.inc
index a2ef2c1..b2c696b 100644
--- a/core/includes/install.core.inc
+++ b/core/includes/install.core.inc
@@ -467,6 +467,7 @@ function install_begin_request(&$install_state) {
  *   HTML output from the last completed task.
  */
 function install_run_tasks(&$install_state) {
+  drupal_check_cookie();
   do {
     // Obtain a list of tasks to perform. The list of tasks itself can be
     // dynamic (e.g., some might be defined by the installation profile,
diff --git a/core/includes/install.inc b/core/includes/install.inc
index ab818ba..e6d954c 100644
--- a/core/includes/install.inc
+++ b/core/includes/install.inc
@@ -1023,6 +1023,18 @@ function drupal_check_module($module) {
 }
 
 /**
+ * Check to see that the client installing this site has cookies enabled.
+*/
+function drupal_check_cookie() {
+  setcookie('drupal_install_check', TRUE, time() + 31536000, '/');
+  if (!isset($_COOKIE['drupal_install_check'])) {
+    $domain = ini_get('session.cookie_domain') ? ltrim(ini_get('session.cookie_domain'), '.') : $_SERVER['HTTP_HOST'];
+    $message = t('It seems your browser does not accept cookies. To set up this site, you need to accept cookies from this domain %domain.', array('%domain' => $domain));
+    drupal_set_message($message, 'error');
+  }
+}
+
+/**
  * Retrieves information about an installation profile from its .info.yml file.
  *
  * The information stored in a profile .info.yml file is similar to that stored
