Index: wp-admin/admin.php
===================================================================
--- wp-admin/admin.php	(revision 3659)
+++ wp-admin/admin.php	(working copy)
@@ -4,9 +4,11 @@
 else
     require_once('../wp-config.php');
 
-if ( get_option('db_version') != $wp_db_version )
-	die (sprintf(__("Your database is out-of-date.  Please <a href='%s'>upgrade</a>."), get_option('siteurl') . '/wp-admin/upgrade.php'));
-    
+if ( get_option('db_version') != $wp_db_version ) {
+	wp_redirect(get_option('siteurl') . '/wp-admin/upgrade.php');
+	die();
+}
+
 require_once(ABSPATH . 'wp-admin/admin-functions.php');
 require_once(ABSPATH . 'wp-admin/admin-db.php');
 require_once(ABSPATH . WPINC . '/registration-functions.php');
Index: wp-admin/upgrade-functions.php
===================================================================
--- wp-admin/upgrade-functions.php	(revision 3659)
+++ wp-admin/upgrade-functions.php	(working copy)
@@ -8,9 +8,12 @@
 	global $wp_current_db_version, $wp_db_version, $wp_rewrite;
 	$wp_current_db_version = __get_option('db_version');
 
+	// Return of true indicates that upgrade took place
+	$return = false;
+
 	// We are up-to-date.  Nothing to do.
 	if ( $wp_db_version == $wp_current_db_version )
-		return;
+		return false;
 
 	// If the version is not set in the DB, try to guess the version.
 	if ( empty($wp_current_db_version) ) {
@@ -29,17 +32,24 @@
 		upgrade_101();
 		upgrade_110();
 		upgrade_130();
+		$return = true;
 	}
 
-	if ( $wp_current_db_version < 3308 )
+	if ( $wp_current_db_version < 3308 ) {
 		upgrade_160();
+		$return = true;
+	}
 
-	if ( $wp_current_db_version < 3582 )
+	if ( $wp_current_db_version < 3582 ) {
 		upgrade_210();
+		$return = true;
+	}
 
 	$wp_rewrite->flush_rules();
 
 	update_option('db_version', $wp_db_version);
+
+	return $return;
 }
 
 function upgrade_100() {
@@ -731,14 +741,20 @@
 
 	$alterations = dbDelta($wp_queries);
 	echo "<ol>\n";
-	foreach($alterations as $alteration) echo "<li>$alteration</li>\n";
+	foreach ( (array) $alterations as $alteration) echo "<li>$alteration</li>\n";
 	echo "</ol>\n";
+	if ( $alterations )
+		return true;
+	return false;
 }
 
 function make_db_current_silent() {
 	global $wp_queries;
 
 	$alterations = dbDelta($wp_queries);
+	if ( $alterations )
+		return true;
+	return false;
 }
 
 function make_site_theme_from_oldschool($theme_name, $template) {
Index: wp-admin/upgrade.php
===================================================================
--- wp-admin/upgrade.php	(revision 3659)
+++ wp-admin/upgrade.php	(working copy)
@@ -5,8 +5,6 @@
 timer_start();
 require_once(ABSPATH . '/wp-admin/upgrade-functions.php');
 
-$step = $_GET['step'];
-if (!$step) $step = 0;
 header( 'Content-Type: text/html; charset=utf-8' );
 ?>
 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
@@ -63,30 +61,40 @@
 </head>
 <body>
 <h1 id="logo"><img alt="WordPress" src="images/wordpress-logo.png" /></h1>
+<h2><?php _e('Upgrading WordPress'); ?></h2>
+<p><?php _e('WordPress is now attempting to upgrade your data'); ?></p>
+<ol>
 <?php
-switch($step) {
-
-	case 0:
 	$goback = wp_specialchars($_SERVER['HTTP_REFERER'], 1);
-?> 
-<p><?php _e('This file upgrades you from any previous version of WordPress to the latest. It may take a while though, so be patient.'); ?></p> 
-	<h2 class="step"><a href="upgrade.php?step=1&amp;backto=<?php echo $goback; ?>"><?php _e('Upgrade WordPress &raquo;'); ?></a></h2>
+	wp_cache_flush();
+?>
+<li><?php _e('Attempting to sync database...'); ?><ul><li>
+<?php if ( make_db_current_silent() )
+			_e('Database sync complete!');
+		else
+			_e('No database sync was necessary.');
+?></li></ul></li>
+<li><?php _e('Attempting data upgrade...'); ?><ul><li>
+<?php if ( upgrade_all() )
+			_e('Upgrade complete!');
+		else
+			_e('No upgrade was necessary.');
+?></li></ul></li>
+</ol>
 <?php
-	break;
-
-	case 1:
 	wp_cache_flush();
-	make_db_current_silent();
-	upgrade_all();
-	wp_cache_flush();
 
 	if ( empty( $_GET['backto'] ) )
 		$backto = __get_option('home');
 	else
 		$backto = wp_specialchars( $_GET['backto'] , 1 );
 ?> 
-<h2><?php _e('Step 1'); ?></h2> 
-	<p><?php printf(__("There's actually only one step. So if you see this, you're done. <a href='%s'>Have fun</a>!"),  $backto); ?></p>
+<h2><?php _e('Upgrade Complete'); ?></h2> 
+	<p><?php printf(__("The upgrade has completed, so you can <a href='%s'>go back to what you were doing</a>!"),  $backto); ?></p>
+<script><!--
+setTimeout('window.location=\'<?php echo $backto; ?>\';', 10000);
+//-->
+</script>
 
 <!--
 <pre>
@@ -96,9 +104,5 @@
 </pre>
 -->
 
-<?php
-	break;
-}
-?> 
 </body>
-</html>
+</html>
\ No newline at end of file
