Index: src/wp-admin/css/common.css
===================================================================
--- src/wp-admin/css/common.css	(revision 38034)
+++ src/wp-admin/css/common.css	(working copy)
@@ -2277,6 +2277,7 @@
 
 .importers td {
 	padding-right: 14px;
+	line-height: 1.5em;
 }
 
 .importers {
@@ -2284,6 +2285,24 @@
 	width: auto;
 }
 
+.importer-title,
+.importer-desc,
+.importer-action {
+	display: block;
+}
+
+.importer-title {
+	color: #000;
+	font-size: 14px;
+	font-weight: 400;
+	margin-bottom: .2em;
+}
+
+.importer-action {
+	margin-bottom: 1em;
+	color: #ddd;
+}
+
 #post-body #post-body-content #namediv h3, /* Back-compat for pre-4.4 */
 #post-body #post-body-content #namediv h2 {
 	margin-top: 0;
Index: src/wp-admin/import.php
===================================================================
--- src/wp-admin/import.php	(revision 38034)
+++ src/wp-admin/import.php	(working copy)
@@ -30,10 +30,12 @@
 	'<p>' . __('<a href="https://wordpress.org/support/" target="_blank">Support Forums</a>') . '</p>'
 );
 
-if ( current_user_can( 'install_plugins' ) )
+if ( current_user_can( 'install_plugins' ) ) {
+	// List of popular importer plugins from the WordPress.org API.
 	$popular_importers = wp_get_popular_importers();
-else
-	$popular_importers = array();
+} else {
+ 	$popular_importers = array();
+}
 
 // Detect and redirect invalid importers like 'movabletype', which is registered as 'mt'
 if ( ! empty( $_GET['invalid'] ) && isset( $popular_importers[ $_GET['invalid'] ] ) ) {
@@ -66,7 +68,7 @@
 <p><?php _e('If you have posts or comments in another system, WordPress can import those into this site. To get started, choose a system to import from below:'); ?></p>
 
 <?php
-
+// Registered (already installed) importers. They're stored in the global $wp_importers.
 $importers = get_importers();
 
 // If a popular importer is not registered, create a dummy registration that links to the plugin installer.
@@ -75,6 +77,8 @@
 		continue;
 	if ( isset( $importers[ $pop_data['importer-id'] ] ) )
 		continue;
+
+	// Fill the array of registered (already installed) importers with data of the popular importers from the WordPress.org API.
 	$importers[ $pop_data['importer-id'] ] = array( $pop_data['name'], $pop_data['description'], 'install' => $pop_data['plugin-slug'] );
 }
 
@@ -87,37 +91,76 @@
 
 <?php
 	foreach ($importers as $importer_id => $data) {
-		$action = '';
+		$plugin_slug = $action = '';
+		$plugin_installed = false;
+
 		if ( isset( $data['install'] ) ) {
 			$plugin_slug = $data['install'];
+
 			if ( file_exists( WP_PLUGIN_DIR . '/' . $plugin_slug ) ) {
-				// Looks like Importer is installed, But not active
+				// Looks like an importer is installed, but not active.
 				$plugins = get_plugins( '/' . $plugin_slug );
 				if ( !empty($plugins) ) {
 					$keys = array_keys($plugins);
 					$plugin_file = $plugin_slug . '/' . $keys[0];
-					$action = '<a href="' . esc_url(wp_nonce_url(admin_url('plugins.php?action=activate&plugin=' . $plugin_file . '&from=import'), 'activate-plugin_' . $plugin_file)) .
-											'"title="' . esc_attr__('Activate importer') . '"">' . $data[0] . '</a>';
+					$url = esc_url( wp_nonce_url( add_query_arg( array(
+						'action' => 'activate',
+						'plugin' => $plugin_file,
+						'from'   => 'import',
+					), admin_url( 'plugins.php' ) ), 'activate-plugin_' . $plugin_file ) );
+					$action = sprintf( '<a href="%1$s">%2$s</a>', $url, __( 'Run Importer' ) );
+					$plugin_installed = true;
 				}
 			}
+
 			if ( empty($action) ) {
 				if ( is_main_site() ) {
-					$action = '<a href="' . esc_url( network_admin_url( 'plugin-install.php?tab=plugin-information&plugin=' . $plugin_slug .
-										'&from=import&TB_iframe=true&width=600&height=550' ) ) . '" class="thickbox open-plugin-details-modal" title="' .
-										esc_attr__('Install importer') . '">' . $data[0] . '</a>';
+					$url = esc_url( wp_nonce_url( add_query_arg( array(
+						'action' => 'install-plugin',
+						'plugin' => $plugin_slug,
+						'from'   => 'import',
+					), self_admin_url( 'update.php' ) ), 'install-plugin_' . $plugin_slug ) );
+					$action = sprintf(
+						'<a href="%1$s" class="install-now" data-slug="%2$s">%3$s</a>',
+						$url,
+						esc_attr( $plugin_slug ),
+						__( 'Install Now' )
+					);
 				} else {
-					$action = $data[0];
-					$data[1] = sprintf( __( 'This importer is not installed. Please install importers from <a href="%s">the main site</a>.' ), get_admin_url( $current_site->blog_id, 'import.php' ) );
+					$action = sprintf( __( 'This importer is not installed. Please install importers from <a href="%s">the main site</a>.' ),
+						get_admin_url( get_current_network_id(), 'import.php' )
+					);
 				}
 			}
 		} else {
-			$action = "<a href='" . esc_url( "admin.php?import=$importer_id" ) . "' title='" . esc_attr( wptexturize( strip_tags( $data[1] ) ) ) ."'>{$data[0]}</a>";
+			$plugin_installed = true;
+			$url = esc_url( add_query_arg( array(
+				'import' => $importer_id,
+			), self_admin_url( 'admin.php' ) ) );
+			$action = sprintf( '<a href="%1$s">%2$s</a>', $url, __( 'Run Importer' ) );
 		}
 
+		if ( ! $plugin_installed ) {
+			$url = esc_url( add_query_arg( array(
+				'tab'       => 'plugin-information',
+				'plugin'    => $plugin_slug,
+				'from'      => 'import',
+				'TB_iframe' => 'true',
+				'width'     => 600,
+				'height'    => 550,
+			), network_admin_url( 'plugin-install.php' ) ) );
+			$action .= sprintf( ' | <a href="%1$s" class="thickbox open-plugin-details-modal">%2$s</a>', $url, __( 'Details' ) );
+		}
+
 		echo "
-			<tr>
-				<td class='import-system row-title'>$action</td>
-				<td class='desc'>{$data[1]}</td>
+			<tr class='importer-item'>
+				<td class='import-system'>
+					<span class='importer-title'>{$data[0]}</span>
+					<span class='importer-action'>{$action}</span>
+				</td>
+				<td class='desc'>
+					<span class='importer-desc'>{$data[1]}</span>
+				</td>
 			</tr>";
 	}
 ?>
Index: src/wp-admin/includes/import.php
===================================================================
--- src/wp-admin/includes/import.php	(revision 38034)
+++ src/wp-admin/includes/import.php	(working copy)
@@ -157,49 +157,49 @@
 		// slug => name, description, plugin slug, and register_importer() slug
 		'blogger' => array(
 			'name' => __( 'Blogger' ),
-			'description' => __( 'Install the Blogger importer to import posts, comments, and users from a Blogger blog.' ),
+			'description' => __( 'Import posts, comments, and users from a Blogger blog.' ),
 			'plugin-slug' => 'blogger-importer',
 			'importer-id' => 'blogger',
 		),
 		'wpcat2tag' => array(
 			'name' => __( 'Categories and Tags Converter' ),
-			'description' => __( 'Install the category/tag converter to convert existing categories to tags or tags to categories, selectively.' ),
+			'description' => __( 'Convert existing categories to tags or tags to categories, selectively.' ),
 			'plugin-slug' => 'wpcat2tag-importer',
 			'importer-id' => 'wp-cat2tag',
 		),
 		'livejournal' => array(
 			'name' => __( 'LiveJournal' ),
-			'description' => __( 'Install the LiveJournal importer to import posts from LiveJournal using their API.' ),
+			'description' => __( 'Import posts from LiveJournal using their API.' ),
 			'plugin-slug' => 'livejournal-importer',
 			'importer-id' => 'livejournal',
 		),
 		'movabletype' => array(
 			'name' => __( 'Movable Type and TypePad' ),
-			'description' => __( 'Install the Movable Type importer to import posts and comments from a Movable Type or TypePad blog.' ),
+			'description' => __( 'Import posts and comments from a Movable Type or TypePad blog.' ),
 			'plugin-slug' => 'movabletype-importer',
 			'importer-id' => 'mt',
 		),
 		'opml' => array(
 			'name' => __( 'Blogroll' ),
-			'description' => __( 'Install the blogroll importer to import links in OPML format.' ),
+			'description' => __( 'Import links in OPML format.' ),
 			'plugin-slug' => 'opml-importer',
 			'importer-id' => 'opml',
 		),
 		'rss' => array(
 			'name' => __( 'RSS' ),
-			'description' => __( 'Install the RSS importer to import posts from an RSS feed.' ),
+			'description' => __( 'Import posts from an RSS feed.' ),
 			'plugin-slug' => 'rss-importer',
 			'importer-id' => 'rss',
 		),
 		'tumblr' => array(
 			'name' => __( 'Tumblr' ),
-			'description' => __( 'Install the Tumblr importer to import posts &amp; media from Tumblr using their API.' ),
+			'description' => __( 'Import posts &amp; media from Tumblr using their API.' ),
 			'plugin-slug' => 'tumblr-importer',
 			'importer-id' => 'tumblr',
 		),
 		'wordpress' => array(
 			'name' => 'WordPress',
-			'description' => __( 'Install the WordPress importer to import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.' ),
+			'description' => __( 'Import posts, pages, comments, custom fields, categories, and tags from a WordPress export file.' ),
 			'plugin-slug' => 'wordpress-importer',
 			'importer-id' => 'wordpress',
 		),
Index: src/wp-admin/js/updates.js
===================================================================
--- src/wp-admin/js/updates.js	(revision 38034)
+++ src/wp-admin/js/updates.js	(working copy)
@@ -503,7 +503,7 @@
 		}, args );
 
 		if ( 'import' === pagenow ) {
-			$message = $( 'a[href*="' + args.slug + '"]' );
+			$message = $( '[data-slug="' + args.slug + '"]' );
 		} else {
 			$message.text( wp.updates.l10n.installing );
 		}
@@ -621,11 +621,11 @@
 			message:   wp.updates.l10n.importerInstalledMsg.replace( '%s', response.activateUrl + '&from=import' )
 		} );
 
-		$( 'a[href*="' + response.slug + '"]' )
-			.removeClass( 'thickbox open-plugin-details-modal updating-message' )
-			.off( 'click' )
+		$( '[data-slug="' + response.slug + '"]' )
+			.removeClass( 'install-now updating-message' )
+			.addClass( 'activate-now' )
 			.attr( 'href', response.activateUrl + '&from=import' )
-			.attr( 'title', wp.updates.l10n.activateImporter );
+			.text( wp.updates.l10n.activateImporter );
 
 		wp.a11y.speak( wp.updates.l10n.installedMsg, 'polite' );
 
@@ -661,7 +661,7 @@
 			message:   errorMessage
 		} );
 
-		$( 'a[href*="' + response.slug + '"]' ).removeClass( 'updating-message' );
+		$( '[data-slug="' + response.slug + '"]' ).removeClass( 'updating-message' );
 
 		wp.a11y.speak( errorMessage, 'assertive' );
 
@@ -1758,6 +1758,42 @@
 		} );
 
 		/**
+		 * Click handler for plugin installs in plugin install view.
+		 *
+		 * @since 4.6.0
+		 *
+		 * @param {Event} event Event interface.
+		 */
+		$document.on( 'click', '.importer-item .install-now', function( event ) {
+			var $button = $( event.target );
+			event.preventDefault();
+
+			if ( $button.hasClass( 'updating-message' ) ) {
+				return;
+			}
+
+			if ( wp.updates.shouldRequestFilesystemCredentials && ! wp.updates.ajaxLocked ) {
+				wp.updates.requestFilesystemCredentials( event );
+
+				$document.on( 'credential-modal-cancel', function() {
+					var $message = $( '.install-now.updating-message' );
+
+					$message
+						.removeClass( 'updating-message' )
+						.text( wp.updates.l10n.installNow );
+
+					wp.a11y.speak( wp.updates.l10n.updateCancel, 'polite' );
+				} );
+			}
+
+			wp.updates.installPlugin( {
+				slug:    $button.data( 'slug' ),
+				success: wp.updates.installImporterSuccess,
+				error:   wp.updates.installImporterError
+			} );
+		} );
+
+		/**
 		 * Click handler for plugin deletions.
 		 *
 		 * @since 4.6.0
Index: src/wp-includes/script-loader.php
===================================================================
--- src/wp-includes/script-loader.php	(revision 38034)
+++ src/wp-includes/script-loader.php	(working copy)
@@ -651,7 +651,7 @@
 				'livePreview'                => __( 'Live Preview' ),
 				'activatePlugin'             => is_network_admin() ? __( 'Network Activate' ) : __( 'Activate' ),
 				'activateTheme'              => is_network_admin() ? __( 'Network Enable' ) : __( 'Activate' ),
-				'activateImporter'           => __( 'Activate importer' ),
+				'activateImporter'           => __( 'Run Importer' ),
 				'unknownError'               => __( 'An unknown error occured' ),
 				'pluginsFound'               => __( 'Number of plugins found: %d' ),
 				'noPluginsFound'             => __( 'No plugins found. Try a different search.' ),
Index: tests/qunit/fixtures/updates.js
===================================================================
--- tests/qunit/fixtures/updates.js	(revision 38034)
+++ tests/qunit/fixtures/updates.js	(working copy)
@@ -38,7 +38,7 @@
 		'livePreview': 'Live Preview',
 		'activatePlugin': 'Activate',
 		'activateTheme': 'Activate',
-		'activateImporter': 'Activate importer',
+		'activateImporter': 'Run Importer',
 		'unknownError': 'An unknown error occured',
 		'pluginsFound': 'Number of plugins found: %d',
 		'noPluginsFound': 'No plugins found. Try a different search.'
