diff --git a/commands/make/make.download.inc b/commands/make/make.download.inc
index dbf3c3d..20d5e0f 100644
--- a/commands/make/make.download.inc
+++ b/commands/make/make.download.inc
@@ -70,9 +70,13 @@ function make_download_file($name, $download, $download_location, $cache_duratio
       return FALSE;
     }
     drush_log(dt('@project downloaded from @url.', array('@project' => $name, '@url' => $download['url'])), 'ok');
+
+    // always unpack unless the unpack key is explicitly set to false
+    $unpack = isset($download['unpack']) ? strtolower($download['unpack']) == 'false' : True;
+
     $download_filename = isset($download['filename']) ? $download['filename'] : '';
     $subtree = isset($download['subtree']) ? $download['subtree'] : NULL;
-    return make_download_file_unpack($filename, $download_location, $download_filename, $subtree);
+    return make_download_file_unpack($filename, $download_location, $download_filename, $subtree, $unpack);
   }
   make_error('DOWNLOAD_ERROR', dt('Unable to download @project from @url.', array('@project' => $name, '@url' => $download['url'])));
   return FALSE;
@@ -107,10 +111,10 @@ function _make_download_file($download, $cache_duration = DRUSH_CACHE_LIFETIME_D
  * @return mixed
  *   The download location on success, FALSE on failure.
  */
-function make_download_file_unpack($filename, $download_location, $name, $subtree = NULL) {
+function make_download_file_unpack($filename, $download_location, $name, $subtree = NULL, $unpack = True) {
   $success = FALSE;
 
-  if (drush_file_is_tarball($filename)) {
+  if (drush_file_is_tarball($filename) && $unpack) {
     $tmp_location = drush_tempdir();
 
     if (!drush_tarball_extract($filename, $tmp_location)) {
diff --git a/docs/make.txt b/docs/make.txt
index b294262..77f3c00 100644
--- a/docs/make.txt
+++ b/docs/make.txt
@@ -181,6 +181,9 @@ Do not use both types of declarations for a single project in your makefile.
   `subtree`  - if the download is an archive, only this subtree within the
   archive will be copied to the target destination. Optional.
 
+  `unpack` - unpack the download if it is an archive. Valid values are "true" and
+  "false". The default is "true" - archives will be unpacked. Optional.
+
 - `download[type] = bzr`
 
   Use a bazaar repository as the source for this project. Options:
