From 4754feafb0d174c84b876b87c0a77d9f959ba311 Mon Sep 17 00:00:00 2001 From: Joao Moreno Date: Tue, 21 Aug 2018 10:42:38 +0200 Subject: [PATCH] fixes #56736 --- .../electron-browser/update.contribution.ts | 7 +- .../parts/update/electron-browser/update.ts | 129 +----------------- 2 files changed, 2 insertions(+), 134 deletions(-) diff --git a/src/vs/workbench/parts/update/electron-browser/update.contribution.ts b/src/vs/workbench/parts/update/electron-browser/update.contribution.ts index a87651e4bfc..4e791267124 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.contribution.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.contribution.ts @@ -13,9 +13,8 @@ import { IWorkbenchContributionsRegistry, Extensions as WorkbenchExtensions } fr import { IGlobalActivityRegistry, GlobalActivityExtensions } from 'vs/workbench/common/activity'; import { IWorkbenchActionRegistry, Extensions as ActionExtensions } from 'vs/workbench/common/actions'; import { SyncActionDescriptor } from 'vs/platform/actions/common/actions'; -import { ShowCurrentReleaseNotesAction, ProductContribution, UpdateContribution, Win3264BitContribution, WinUserSetupContribution } from './update'; +import { ShowCurrentReleaseNotesAction, ProductContribution, UpdateContribution, Win3264BitContribution } from './update'; import { LifecyclePhase } from 'vs/platform/lifecycle/common/lifecycle'; -import product from 'vs/platform/node/product'; const workbench = Registry.as(WorkbenchExtensions.Workbench); @@ -25,10 +24,6 @@ if (platform.isWindows) { if (process.arch === 'ia32') { workbench.registerWorkbenchContribution(Win3264BitContribution, LifecyclePhase.Running); } - - if (product.target !== 'user') { - workbench.registerWorkbenchContribution(WinUserSetupContribution, LifecyclePhase.Running); - } } Registry.as(GlobalActivityExtensions) diff --git a/src/vs/workbench/parts/update/electron-browser/update.ts b/src/vs/workbench/parts/update/electron-browser/update.ts index 2e468debc61..675bea320d2 100644 --- a/src/vs/workbench/parts/update/electron-browser/update.ts +++ b/src/vs/workbench/parts/update/electron-browser/update.ts @@ -21,7 +21,7 @@ import { IOpenerService } from 'vs/platform/opener/common/opener'; import { ICommandService } from 'vs/platform/commands/common/commands'; import { IWorkbenchContribution } from 'vs/workbench/common/contributions'; import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage'; -import { IUpdateService, State as UpdateState, StateType, IUpdate, UpdateType } from 'vs/platform/update/common/update'; +import { IUpdateService, State as UpdateState, StateType, IUpdate } from 'vs/platform/update/common/update'; import * as semver from 'semver'; import { IEnvironmentService } from 'vs/platform/environment/common/environment'; import { INotificationService, INotificationHandle } from 'vs/platform/notification/common/notification'; @@ -209,133 +209,6 @@ export class Win3264BitContribution implements IWorkbenchContribution { } } -async function isUserSetupInstalled(): Promise { - const rawUserAppId = process.arch === 'x64' ? product.win32x64UserAppId : product.win32UserAppId; - const userAppId = rawUserAppId.replace(/^\{\{/, '{'); - const Registry = await import('winreg'); - const key = new Registry({ - hive: Registry.HKCU, - key: `\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\${userAppId}_is1` - }); - - try { - await new Promise((c, e) => key.get('', (err, result) => err ? e(err) : c(result))); - } catch (err) { - return false; - } - - return true; -} - -export class WinUserSetupContribution implements IWorkbenchContribution { - - private static readonly KEY = 'update/win32-usersetup'; - private static readonly KEY_BOTH = 'update/win32-usersetup-both'; - - private static readonly STABLE_URL = 'https://vscode-update.azurewebsites.net/latest/win32-x64-user/stable'; - private static readonly STABLE_URL_32BIT = 'https://vscode-update.azurewebsites.net/latest/win32-user/stable'; - private static readonly INSIDER_URL = 'https://vscode-update.azurewebsites.net/latest/win32-x64-user/insider'; - private static readonly INSIDER_URL_32BIT = 'https://vscode-update.azurewebsites.net/latest/win32-user/insider'; - - // TODO@joao this needs to change to the 1.26 release notes - private static readonly READ_MORE = 'https://aka.ms/vscode-win32-user-setup'; - - private disposables: IDisposable[] = []; - - constructor( - @IStorageService private storageService: IStorageService, - @INotificationService private notificationService: INotificationService, - @IEnvironmentService private environmentService: IEnvironmentService, - @IOpenerService private openerService: IOpenerService, - @IUpdateService private updateService: IUpdateService - ) { - if (!environmentService.isBuilt) { - return; - } - - const neverShowAgain = new NeverShowAgain(WinUserSetupContribution.KEY_BOTH, this.storageService); - - if (!neverShowAgain.shouldShow()) { - return; - } - - isUserSetupInstalled().then(userSetupIsInstalled => { - if (!userSetupIsInstalled) { - updateService.onStateChange(this.onUpdateStateChange, this, this.disposables); - this.onUpdateStateChange(this.updateService.state); - return; - } - - const handle = this.notificationService.prompt( - severity.Info, - nls.localize('usersetupsystem', "You are running the system-wide installation of {0}, while having the user-wide distribution installed as well.", product.nameShort), - [ - { label: nls.localize('ok', "OK"), run: () => null }, - { - label: nls.localize('okneveragain', "OK, Don't Show Again"), - run: () => { - neverShowAgain.action.run(handle); - neverShowAgain.action.dispose(); - } - }] - ); - }); - } - - private onUpdateStateChange(state: UpdateState): void { - if (state.type !== StateType.Idle) { - return; - } - - if (state.updateType !== UpdateType.Setup) { - return; - } - - if (!this.environmentService.isBuilt || this.environmentService.disableUpdates) { - return; - } - - const neverShowAgain = new NeverShowAgain(WinUserSetupContribution.KEY, this.storageService); - - if (!neverShowAgain.shouldShow()) { - return; - } - - const handle = this.notificationService.prompt( - severity.Info, - nls.localize('usersetup', "We recommend switching to our new User Setup distribution of {0} for Windows!", product.nameShort), - [ - { - label: nls.localize('learnMore', "Learn More"), - run: () => { - return this.openerService.open(URI.parse(WinUserSetupContribution.READ_MORE)); - } - }, - { - label: nls.localize('downloadnow', "Download"), - run: () => { - const url = product.quality === 'insider' - ? (process.arch === 'ia32' ? WinUserSetupContribution.INSIDER_URL_32BIT : WinUserSetupContribution.INSIDER_URL) - : (process.arch === 'ia32' ? WinUserSetupContribution.STABLE_URL_32BIT : WinUserSetupContribution.STABLE_URL); - - return this.openerService.open(URI.parse(url)); - } - }, - { - label: nls.localize('neveragain', "Don't Show Again"), - run: () => { - neverShowAgain.action.run(handle); - neverShowAgain.action.dispose(); - } - }] - ); - } - - dispose(): void { - this.disposables = dispose(this.disposables); - } -} - class CommandAction extends Action { constructor(