Index: bp-themes/bp-default/functions.php
===================================================================
--- bp-themes/bp-default/functions.php	(revision 3703)
+++ bp-themes/bp-default/functions.php	(working copy)
@@ -88,6 +88,11 @@
 		// Add a way for the custom header to be styled in the admin panel that controls custom headers.
 		add_custom_image_header( 'bp_dtheme_header_style', 'bp_dtheme_admin_header_style' );
 	}
+	
+	// When BP is first installed, bp_is_active() won't be defined on the final step of the
+	// wizard. This is a workaround.
+	if ( !function_exists( 'bp_is_active' ) )
+		return;
 
 	// Register buttons for the relevant component templates
 	// Friends button
Index: bp-core/admin/bp-core-upgrade.php
===================================================================
--- bp-core/admin/bp-core-upgrade.php	(revision 3703)
+++ bp-core/admin/bp-core-upgrade.php	(working copy)
@@ -1,47 +1,5 @@
 <?php
 
-if ( !defined( 'BP_ROOT_BLOG' ) )
-	define( 'BP_ROOT_BLOG', 1 );
-
-require_once( dirname( dirname( __FILE__ ) ) . '/bp-core-wpabstraction.php' );
-
-register_theme_directory( WP_PLUGIN_DIR . '/buddypress/bp-themes' );
-
-// Install site options on activation
-bp_core_activate_site_options( array( 'bp-disable-account-deletion' => 0, 'bp-disable-avatar-uploads' => 0, 'bp-disable-blogforum-comments' => 0,  'bp-disable-forum-directory' => 0,  'bp-disable-profile-sync' => 0 ) );
-
-/**
- * bp_core_activate_site_options()
- *
- * When switching from single to multisite we need to copy blog options to
- * site options.
- *
- * @package BuddyPress Core
- */
-function bp_core_activate_site_options( $keys = array() ) {
-	global $bp;
-
-	$bp->site_options = bp_core_get_site_options();
-
-	if ( !empty( $keys ) && is_array( $keys ) ) {
-		$errors = false;
-
-		foreach ( $keys as $key => $default ) {
-			if ( empty( $bp->site_options[ $key ] ) ) {
-				$bp->site_options[ $key ] = get_blog_option( BP_ROOT_BLOG, $key, $default );
-
-				if ( !update_site_option( $key, $bp->site_options[ $key ] ) )
-					$errors = true;
-			}
-		}
-
-		if ( empty( $errors ) )
-			return true;
-	}
-
-	return false;
-}
-
 class BP_Core_Setup_Wizard {
 	var $current_step;
 	var $steps;
@@ -1160,13 +1118,13 @@
 }
 
 /**
- * bp_core_add_admin_menu_page()
+ * bp_core_upgrade_add_admin_menu_page()
  *
  * A better version of add_admin_menu_page() that allows positioning of menus.
  *
  * @package BuddyPress Core
  */
-function bp_core_add_admin_menu_page( $args = '' ) {
+function bp_core_upgrade_add_admin_menu_page( $args = '' ) {
 	global $menu, $admin_page_hooks, $_registered_pages;
 
 	$defaults = array(
@@ -1249,9 +1207,13 @@
  * @global $wpdb WordPress DB access object.
  * @uses add_submenu_page() WP function to add a submenu item
  */
-function bp_core_add_admin_menu() {
+function bp_core_upgrade_add_admin_menu() {
 	global $bp_wizard;
 
+	// Only load this version of the menu if this is an upgrade or a new installation
+	if ( ( !defined( 'BP_IS_UPGRADE' ) || !BP_IS_UPGRADE ) && ( !defined( 'BP_IS_INSTALL' ) || !BP_IS_INSTALL ) )
+		return false;
+
 	if ( !current_user_can( 'activate_plugins' ) )
 		return false;
 
@@ -1261,7 +1223,7 @@
 		$status = __( 'Upgrade', 'buddypress' );
 
 	/* Add the administration tab under the "Site Admin" tab for site administrators */
-	bp_core_add_admin_menu_page( array(
+	bp_core_upgrade_add_admin_menu_page( array(
 		'menu_title' => __( 'BuddyPress', 'buddypress' ),
 		'page_title' => __( 'BuddyPress', 'buddypress' ),
 		'access_level' => 10, 'file' => 'bp-wizard',
@@ -1272,11 +1234,11 @@
 	$hook = add_submenu_page( 'bp-wizard', $status, $status, 'manage_options', 'bp-wizard', array( $bp_wizard, 'html' ) );
 
 	/* Add a hook for css/js */
-	add_action( "admin_print_styles-$hook", 'bp_core_add_admin_menu_styles' );
+	add_action( "admin_print_styles-$hook", 'bp_core_upgrade_add_admin_menu_styles' );
 }
-add_action( 'admin_menu', 'bp_core_add_admin_menu' );
+add_action( 'admin_menu', 'bp_core_upgrade_add_admin_menu' );
 
-function bp_core_add_admin_menu_styles() {
+function bp_core_upgrade_add_admin_menu_styles() {
 	if ( defined( 'SCRIPT_DEBUG' ) && SCRIPT_DEBUG )
 		wp_enqueue_style( 'bp-admin-css', apply_filters( 'bp_core_admin_css', plugins_url( $path = '/buddypress' ) . '/bp-core/css/admin.dev.css' ) );
 	else
@@ -1292,4 +1254,30 @@
 	</style>
 <?php
 }
+
+/**
+ * Adds an admin nag about running the BP upgrade/install wizard
+ *
+ * @package BuddyPress Core
+ * @since 1.3
+ * @global $pagenow The current admin page
+ */
+function bp_core_update_nag() {
+	if ( !is_super_admin() )
+		return;
+
+	global $pagenow;
+
+	if ( 'admin.php' == $pagenow && ( empty( $_GET['page'] ) || 'bp-wizard' == $_GET['page'] ) )
+		return;
+		
+	if ( defined( 'BP_IS_UPGRADE' ) && BP_IS_UPGRADE )
+		$msg = sprintf( __( 'BuddyPress has been updated! Please run the <a href="%s">upgrade wizard</a>.', 'buddypress' ), admin_url( 'admin.php?page=bp-wizard' ) );
+	else if ( defined( 'BP_IS_INSTALL' ) && BP_IS_INSTALL )
+		$msg = sprintf( __( 'BuddyPress has been installed! Please run the <a href="%s">upgrade wizard</a>.', 'buddypress' ), admin_url( 'admin.php?page=bp-wizard' ) );
+		
+	echo "<div class='update-nag'>$msg</div>";
+}
+add_action( 'admin_notices', 'bp_core_update_nag', 5 );
+
 ?>
\ No newline at end of file
Index: bp-loader.php
===================================================================
--- bp-loader.php	(revision 3703)
+++ bp-loader.php	(working copy)
@@ -16,17 +16,12 @@
 if ( !defined( 'BP_ROOT_BLOG' ) )
 	define( 'BP_ROOT_BLOG', 1 );
 
-/***
- * Check if this is the first time BuddyPress has been loaded, or the first time
- * since an upgrade. If so, load the install/upgrade routine only.
- */
-if ( get_site_option( 'bp-db-version' ) < constant( 'BP_DB_VERSION' ) ) {
+// Test to see whether this is a new installation or an upgraded version of BuddyPress
+$bp_db_version = get_site_option( 'bp-db-version' );
+
+if ( !$bp_db_version ) {
+	define( 'BP_IS_INSTALL', true );
 	require_once( WP_PLUGIN_DIR . '/buddypress/bp-core/admin/bp-core-upgrade.php' );
-
-/***
- * If the install or upgrade routine is completed and everything is up to date
- * continue loading BuddyPress as normal.
- */
 } else {
 	/***
 	 * This file will load in each BuddyPress component based on which
@@ -34,37 +29,43 @@
 	 */
 	require_once( WP_PLUGIN_DIR . '/buddypress/bp-core.php' );
 	$bp_deactivated = apply_filters( 'bp_deactivated_components', get_site_option( 'bp-deactivated-components' ) );
-
+	
 	do_action( 'bp_core_loaded' );
-
+	
 	/* Activity Streams */
 	if ( !isset( $bp_deactivated['bp-activity.php'] ) && file_exists( BP_PLUGIN_DIR . '/bp-activity.php') )
 		include( BP_PLUGIN_DIR . '/bp-activity.php' );
-
+	
 	/* Blog Tracking */
 	if ( !isset( $bp_deactivated['bp-blogs.php'] ) && file_exists( BP_PLUGIN_DIR . '/bp-blogs.php') )
 		include( BP_PLUGIN_DIR . '/bp-blogs.php' );
-
+	
 	/* bbPress Forum Integration */
 	if ( !isset( $bp_deactivated['bp-forums.php'] ) && file_exists( BP_PLUGIN_DIR . '/bp-forums.php') )
 		include( BP_PLUGIN_DIR . '/bp-forums.php' );
-
+	
 	/* Friend Connections */
 	if ( !isset( $bp_deactivated['bp-friends.php'] ) && file_exists( BP_PLUGIN_DIR . '/bp-friends.php') )
 		include( BP_PLUGIN_DIR . '/bp-friends.php' );
-
+	
 	/* Groups Support */
 	if ( !isset( $bp_deactivated['bp-groups.php'] ) && file_exists( BP_PLUGIN_DIR . '/bp-groups.php') )
 		include( BP_PLUGIN_DIR . '/bp-groups.php' );
-
+	
 	/* Private Messaging */
 	if ( !isset( $bp_deactivated['bp-messages.php'] ) && file_exists( BP_PLUGIN_DIR . '/bp-messages.php') )
 		include( BP_PLUGIN_DIR . '/bp-messages.php' );
-
+	
 	/* Extended Profiles */
 	if ( !isset( $bp_deactivated['bp-xprofile.php'] ) && file_exists( BP_PLUGIN_DIR . '/bp-xprofile.php') )
 		include( BP_PLUGIN_DIR . '/bp-xprofile.php' );
-
+		
+	// If this is an upgrade, load the upgrade file
+	if ( $bp_db_version < constant( 'BP_DB_VERSION' ) ) {
+		define( 'BP_IS_UPGRADE', true );
+		require_once( WP_PLUGIN_DIR . '/buddypress/bp-core/admin/bp-core-upgrade.php' );
+	}	
+	
 	add_action( 'plugins_loaded', 'bp_loaded', 20 );
 }
 
Index: bp-core.php
===================================================================
--- bp-core.php	(revision 3703)
+++ bp-core.php	(working copy)
@@ -314,6 +314,11 @@
 	if ( !is_super_admin() )
 		return false;
 
+        // Don't add this version of the admin menu if a BP upgrade is in progress
+        // See bp_core_upgrade_add_admin_menu()
+        if ( defined( 'BP_IS_UPGRADE' ) && BP_IS_UPGRADE )
+                return false;
+        
 	/* Add the administration tab under the "Site Admin" tab for site administrators */
 	$hook = bp_core_add_admin_menu_page( array(
 		'menu_title' => __( 'BuddyPress', 'buddypress' ),
