diff --git includes/updater.inc includes/updater.inc
index 56efa52..6a15f07 100644
--- includes/updater.inc
+++ includes/updater.inc
@@ -300,32 +300,32 @@ class Updater {
       $parent_dir = dirname($directory);
       if (!is_writable($parent_dir)) {
         @chmod($parent_dir, 0755);
-        // It is expected that this will fail if the directory is owned by the
-        // FTP user. If the FTP user == web server, it will succeed.
+      }
+      // It is expected that this will fail if the directory is owned by the
+      // FTP user. If the FTP user == web server, it will succeed.
+      try {
+        $filetransfer->createDirectory($directory);
+        $this->makeWorldReadable($filetransfer, $directory);
+      }
+      catch (FileTransferException $e) {
+        // Probably still not writable. Try to chmod and do it again.
+        // @todo: Make a new exception class so we can catch it differently.
         try {
+          $old_perms = substr(sprintf('%o', fileperms($parent_dir)), -4);
+          $filetransfer->chmod($parent_dir, 0755);
           $filetransfer->createDirectory($directory);
           $this->makeWorldReadable($filetransfer, $directory);
+          // Put the permissions back.
+          $filetransfer->chmod($parent_dir, intval($old_perms, 8));
         }
         catch (FileTransferException $e) {
-          // Probably still not writable. Try to chmod and do it again.
-          // @todo: Make a new exception class so we can catch it differently.
-          try {
-            $old_perms = substr(sprintf('%o', fileperms($parent_dir)), -4);
-            $filetransfer->chmod($parent_dir, 0755);
-            $filetransfer->createDirectory($directory);
-            $this->makeWorldReadable($filetransfer, $directory);
-            // Put the permissions back.
-            $filetransfer->chmod($parent_dir, intval($old_perms, 8));
-          }
-          catch (FileTransferException $e) {
-            $message = t($e->getMessage(), $e->arguments);
-            $throw_message = t('Unable to create %directory due to the following: %reason', array('%directory' => $install_location, '%reason' => $message));
-            throw new UpdaterException($throw_message);
-          }
+          $message = t($e->getMessage(), $e->arguments);
+          $throw_message = t('Unable to create %directory due to the following: %reason', array('%directory' => $directory, '%reason' => $message));
+          throw new UpdaterException($throw_message);
         }
-        // Put the parent directory back.
-        @chmod($parent_dir, 0555);
       }
+      // Put the parent directory back.
+      @chmod($parent_dir, 0555);
     }
   }
 
