Change:
} } <del> run(): Promise<any> { </del> <ins> async run(): Promise<any> { </ins> this.extensionsWorkbenchService.open(this.extension); alert(localize('installExtensionStart', "Installing extension {0} started. An editor is now open with more details on this extension", this.extension.displayName)); <del> return this.install(this.extension); </del> <ins> const extension = await this.install(this.extension); if (extension.local && extension.local.manifest.contributes && extension.local.manifest.contributes.themes && extension.local.manifest.contributes.themes.length) { return this.applyInstalledTheme(extension.local); } </ins> } <del> private install(extension: IExtension): Promise<any> { return this.extensionsWorkbenchService.install(extension).then(null, err => { if (!extension.gallery) { return this.notificationService.error(err); } </del> <ins> private install(extension: IExtension): Promise<IExtension> { return this.extensionsWorkbenchService.install(extension) .then(null, err => { if (!extension.gallery) { return this.notificationService.error(err); } </ins> <del> console.error(err); </del> <ins> console.error(err); </ins> <del> return promptDownloadManually(extension.gallery, localize('failedToInstall', "Failed to install '{0}'.", extension.identifier.id), err, this.instantiationService, this.notificationService, this.openerService); }); </del> <ins> return promptDownloadManually(extension.gallery, localize('failedToInstall', "Failed to install '{0}'.", extension.identifier.id), err, this.instantiationService, this.notificationService, this.openerService); }); } private async applyInstalledTheme(extension: ILocalExtension): Promise<void> { const runningExtension = await this.getRunningExtension(extension); if (runningExtension) { const currentTheme = this.workbenchThemeService.getColorTheme(); const themes = await this.workbenchThemeService.getColorThemes(runningExtension.identifier); const delayer = new Delayer<void>(100); const pickedTheme = await this.quickInputService.pick( themes.map(theme => (<IQuickPickItem>{ label: theme.label, id: theme.id })), { placeHolder: localize('apply installed theme', "Apply installed theme"), onDidFocus: item => delayer.trigger(() => this.workbenchThemeService.setColorTheme(item.id, ConfigurationTarget.MEMORY).then(() => undefined)) }); this.workbenchThemeService.setColorTheme(pickedTheme ? pickedTheme.id : currentTheme.id, undefined); } } private async getRunningExtension(extension: ILocalExtension): Promise<IExtensionDescription | null> { const runningExtension = await this.runtimeExtensionService.getExtension(extension.identifier.id); if (runningExtension) { return runningExtension; } if (this.runtimeExtensionService.canAddExtension(toExtensionDescription(extension))) { return new Promise<IExtensionDescription | null>((c, e) => { const disposable = this.runtimeExtensionService.onDidChangeExtensions(async () => { const runningExtension = await this.runtimeExtensionService.getExtension(extension.identifier.id); if (runningExtension) { disposable.dispose(); c(runningExtension); } }); }); } return null; </ins> } }

Discussion:
Improve user experience while installing themes
!
It would be cool if you could preview themes in the store, maybe with a split view hosting some example code, or even with the files you have open.
Please open a feature request for it