diff --git modules/update/update.manager.inc modules/update/update.manager.inc
index 11a3c8e..65347a2 100644
--- modules/update/update.manager.inc
+++ modules/update/update.manager.inc
@@ -465,10 +465,25 @@ function update_manager_confirm_update_form_submit($form, &$form_state) {
 function update_manager_install_form(&$form_state) {
   $form = array();
 
+  // Collect all the supported archive file extensions for the UI text.
+  $extensions = array();
+  $archiver_info = archiver_get_info();
+  foreach ($archiver_info as $info) {
+    if (!empty($info['extensions'])) {
+      $extensions += $info['extensions'];
+    }
+  }
+  $extensions_list = implode(', ', $extensions);
+  $form['help_text'] = array(
+    '#prefix' => '<p>',
+    '#markup' => t('To install a new module or theme, either paste the URL of an archive file you wish to install, or upload the archive file that you have downloaded. You can find <a href="@module_url">modules</a> and <a href="@theme_url">themes</a> at <a href="@drupal_org_url">http://drupal.org</a>. The following archive extensions are supported: %extensions', array('@module_url' => 'http://drupal.org/project/modules', '@theme_url' => 'http://drupal.org/project/themes', '@drupal_org_url' => 'http://drupal.org', '%extensions' => $extensions_list)),
+    '#suffix' => '</p>',
+  );
+
   $form['project_url'] = array(
     '#type' => 'textfield',
     '#title' => t('URL'),
-    '#description' => t('Paste the URL to a Drupal module or theme archive (.tar.gz) to install it. (e.g http://ftp.drupal.org/files/projects/projectname.tar.gz)'),
+    '#description' => t('Paste the URL to a Drupal module or theme archive to install it (e.g http://ftp.drupal.org/files/projects/projectname.tar.gz).'),
   );
 
   $form['information'] = array(
@@ -480,7 +495,7 @@ function update_manager_install_form(&$form_state) {
   $form['project_upload'] = array(
     '#type' => 'file',
     '#title' => t('Upload a module or theme'),
-    '#description' => t('Upload a Drupal module or theme (in .tar.gz format) to install it.'),
+    '#description' => t('Upload a Drupal module or theme archive to install it.'),
   );
 
   $form['submit'] = array(
@@ -537,7 +552,7 @@ function update_manager_install_form_submit($form, &$form_state) {
     return;
   }
 
-  $files = $archive->listContent();
+  $files = $archive->listContents();
   if (!$files) {
     form_set_error($field, t('Provided archive contains no files.'));
     return;
@@ -616,20 +631,19 @@ function _update_manager_extract_directory() {
  *   The filename of the archive you wish to extract.
  * @param string $directory
  *   The directory you wish to extract the archive info.
- *
- * @return
- *    The Archive_Tar class used to extract the archive.
+ * @return Archiver
+ *   An archiver object.
  * @throws Exception on failure.
- *
- * @todo Currently, this is hard-coded to only support .tar.gz. This is an API
- * bug, and should be fixed. See http://drupal.org/node/604618.
  */
 function update_manager_archive_extract($file, $directory) {
-  $archive_tar = new Archive_Tar(drupal_realpath($file));
-  if (!$archive_tar->extract($directory)) {
-    throw new Exception(t('Unable to extract %file', array('%file' => $file)));
-  }
-  return $archive_tar;
+  // @todo: remove this when http://drupal.org/node/604618#comment-2179010
+  $file = drupal_realpath($file);
+  $archiver = archiver_get_archiver($file);
+  if (!$archiver) {
+    throw new Exception(t('Cannot extract %file, not a valid archive.', array ('%file' => $file)));
+  }
+  $archiver->extract($directory);
+  return $archiver;
 }
 
 /**
diff --git modules/update/update.module modules/update/update.module
index 8e10865..d1d5586 100644
--- modules/update/update.module
+++ modules/update/update.module
@@ -79,11 +79,6 @@ function update_help($path, $arg) {
     case 'admin/reports/updates':
       return '<p>' . t('Here you can find information about available updates for your installed modules and themes. Note that each module or theme is part of a "project", which may or may not have the same name, and might include multiple modules or themes within it.') . '</p>';
 
-    case 'admin/appearance/install':
-    case 'admin/config/modules/install':
-    case 'admin/reports/updates/install':
-      return '<p>' . t('To install a new module or theme, either upload the .tar.gz file that you have downloaded, or paste the URL of a .tar.gz you wish to install. You can find <a href="@module_url">modules</a> and <a href="@theme_url">themes</a> at <a href="@drupal_org_url">http://drupal.org</a>.', array('@module_url' => 'http://drupal.org/project/modules', '@theme_url' => 'http://drupal.org/project/themes', '@drupal_org_url' => 'http://drupal.org')) . '</p>';
-
     case 'admin/appearance':
     case 'admin/config/modules':
       include_once DRUPAL_ROOT . '/includes/install.inc';
@@ -101,8 +96,11 @@ function update_help($path, $arg) {
       }
 
     case 'admin/appearance/update':
+    case 'admin/appearance/install':
     case 'admin/config/modules/update':
+    case 'admin/config/modules/install':
     case 'admin/reports/updates/update':
+    case 'admin/reports/updates/install':
     case 'admin/reports/updates/settings':
     case 'admin/reports/status':
     case 'admin/update/confirm':
diff --git sites/default/default.settings.php sites/default/default.settings.php
old mode 100644
new mode 100755
