Index: wp-admin/includes/class-wp-upgrader.php
===================================================================
--- wp-admin/includes/class-wp-upgrader.php	(revision 17519)
+++ wp-admin/includes/class-wp-upgrader.php	(working copy)
@@ -1067,6 +1067,7 @@
 class Bulk_Upgrader_Skin extends WP_Upgrader_Skin {
 	var $in_loop = false;
 	var $error = false;
+	var $errors_occurred = false;
 
 	function Bulk_Upgrader_Skin($args = array()) {
 		return $this->__construct($args);
@@ -1081,7 +1082,7 @@
 
 	function add_strings() {
 		$this->upgrader->strings['skin_upgrade_start'] = __('The update process is starting. This process may take a while on some hosts, so please be patient.');
-		$this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: <strong>%2$s</strong>.');
+		$this->upgrader->strings['skin_update_failed_error'] = __('An error occurred while updating %1$s: <strong>%2$s</strong>');
 		$this->upgrader->strings['skin_update_failed'] = __('The update of %1$s failed.');
 		$this->upgrader->strings['skin_update_successful'] = __('%1$s updated successfully.').' <a onclick="%2$s" href="#" class="hide-if-no-js"><span>'.__('Show Details').'</span><span class="hidden">'.__('Hide Details').'</span>.</a>';
 		$this->upgrader->strings['skin_upgrade_end'] = __('All updates have been completed.');
@@ -1126,6 +1127,7 @@
 			$this->error = implode(', ', $messages);
 		}
 		echo '<script type="text/javascript">jQuery(\'.waiting-' . esc_js($this->upgrader->update_current) . '\').hide();</script>';
+		$this->errors_occurred = true;
 	}
 
 	function bulk_header() {
@@ -1133,7 +1135,8 @@
 	}
 
 	function bulk_footer() {
-		$this->feedback('skin_upgrade_end');
+		if( !$this->errors_occurred )
+			$this->feedback( 'skin_upgrade_end' );
 	}
 
 	function before($title = '') {
