mirror of
https://github.com/microsoft/vscode.git
synced 2026-09-21 03:36:14 +01:00
Fix #14412
This commit is contained in:
@@ -122,7 +122,7 @@ class Main {
|
||||
console.log(localize('foundExtension', "Found '{0}' in the marketplace.", id));
|
||||
console.log(localize('installing', "Installing..."));
|
||||
|
||||
return this.extensionManagementService.installFromGallery(extension, false)
|
||||
return this.extensionManagementService.installFromGallery(extension)
|
||||
.then(() => console.log(localize('successInstall', "Extension '{0}' v{1} was successfully installed!", id, extension.version)));
|
||||
});
|
||||
});
|
||||
|
||||
@@ -250,7 +250,7 @@ export interface IExtensionManagementService {
|
||||
onDidUninstallExtension: Event<DidUninstallExtensionEvent>;
|
||||
|
||||
install(zipPath: string): TPromise<void>;
|
||||
installFromGallery(extension: IGalleryExtension, promptToInstallDependencies?: boolean): TPromise<void>;
|
||||
installFromGallery(extension: IGalleryExtension): TPromise<void>;
|
||||
uninstall(extension: ILocalExtension, force?: boolean): TPromise<void>;
|
||||
getInstalled(type?: LocalExtensionType): TPromise<ILocalExtension[]>;
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ export class ExtensionManagementChannel implements IExtensionManagementChannel {
|
||||
case 'event:onUninstallExtension': return eventToCall(this.onUninstallExtension);
|
||||
case 'event:onDidUninstallExtension': return eventToCall(this.onDidUninstallExtension);
|
||||
case 'install': return this.service.install(arg);
|
||||
case 'installFromGallery': return this.service.installFromGallery(arg[0], arg[1]);
|
||||
case 'installFromGallery': return this.service.installFromGallery(arg[0]);
|
||||
case 'uninstall': return this.service.uninstall(arg[0], arg[1]);
|
||||
case 'getInstalled': return this.service.getInstalled(arg);
|
||||
}
|
||||
@@ -73,8 +73,8 @@ export class ExtensionManagementChannelClient implements IExtensionManagementSer
|
||||
return this.channel.call('install', zipPath);
|
||||
}
|
||||
|
||||
installFromGallery(extension: IGalleryExtension, promptToInstallDependencies: boolean = true): TPromise<void> {
|
||||
return this.channel.call('installFromGallery', [extension, promptToInstallDependencies]);
|
||||
installFromGallery(extension: IGalleryExtension): TPromise<void> {
|
||||
return this.channel.call('installFromGallery', [extension]);
|
||||
}
|
||||
|
||||
uninstall(extension: ILocalExtension, force = false): TPromise<void> {
|
||||
|
||||
@@ -121,7 +121,7 @@ export class ExtensionManagementService implements IExtensionManagementService {
|
||||
});
|
||||
}
|
||||
|
||||
installFromGallery(extension: IGalleryExtension, promptToInstallDependencies: boolean = true): TPromise<void> {
|
||||
installFromGallery(extension: IGalleryExtension): TPromise<void> {
|
||||
const id = getLocalExtensionIdFromGallery(extension, extension.version);
|
||||
|
||||
return this.isObsolete(id).then(isObsolete => {
|
||||
@@ -129,7 +129,7 @@ export class ExtensionManagementService implements IExtensionManagementService {
|
||||
return TPromise.wrapError<void>(new Error(nls.localize('restartCode', "Please restart Code before reinstalling {0}.", extension.displayName || extension.name)));
|
||||
}
|
||||
this._onInstallExtension.fire({ id, gallery: extension });
|
||||
return this.installCompatibleVersion(extension, true, promptToInstallDependencies)
|
||||
return this.installCompatibleVersion(extension, true)
|
||||
.then(
|
||||
local => this._onDidInstallExtension.fire({ id, local, gallery: extension }),
|
||||
error => {
|
||||
@@ -140,31 +140,10 @@ export class ExtensionManagementService implements IExtensionManagementService {
|
||||
});
|
||||
}
|
||||
|
||||
private installCompatibleVersion(extension: IGalleryExtension, installDependencies: boolean, promptToInstallDependencies: boolean): TPromise<ILocalExtension> {
|
||||
private installCompatibleVersion(extension: IGalleryExtension, installDependencies: boolean): TPromise<ILocalExtension> {
|
||||
return this.galleryService.loadCompatibleVersion(extension)
|
||||
.then(compatibleVersion => this.getDependenciesToInstall(extension, installDependencies)
|
||||
.then(dependencies => {
|
||||
if (!dependencies.length) {
|
||||
return this.downloadAndInstall(compatibleVersion);
|
||||
}
|
||||
if (promptToInstallDependencies) {
|
||||
const message = nls.localize('installDependeciesConfirmation', "Installing '{0}' also installs its dependencies. Would you like to continue?", extension.displayName);
|
||||
const options = [
|
||||
nls.localize('install', "Yes"),
|
||||
nls.localize('doNotInstall', "No")
|
||||
];
|
||||
return this.choiceService.choose(Severity.Info, message, options, 1, true)
|
||||
.then(value => {
|
||||
if (value === 0) {
|
||||
return this.installWithDependencies(compatibleVersion);
|
||||
}
|
||||
return TPromise.wrapError<ILocalExtension>(errors.canceled());
|
||||
}, error => TPromise.wrapError<ILocalExtension>(errors.canceled()));
|
||||
} else {
|
||||
return this.installWithDependencies(compatibleVersion);
|
||||
}
|
||||
})
|
||||
);
|
||||
.then(dependencies => dependencies.length ? this.installWithDependencies(compatibleVersion) : this.downloadAndInstall(compatibleVersion)));
|
||||
}
|
||||
|
||||
private getDependenciesToInstall(extension: IGalleryExtension, checkDependecies: boolean): TPromise<string[]> {
|
||||
@@ -202,7 +181,7 @@ export class ExtensionManagementService implements IExtensionManagementService {
|
||||
}
|
||||
return this.downloadAndInstall(extension)
|
||||
.then(localExtension => {
|
||||
return TPromise.join(dependecies.map((dep) => this.installCompatibleVersion(dep, false, false)))
|
||||
return TPromise.join(dependecies.map((dep) => this.installCompatibleVersion(dep, false)))
|
||||
.then(installedLocalExtensions => {
|
||||
for (const installedLocalExtension of installedLocalExtensions) {
|
||||
const gallery = this.getGalleryExtensionForLocalExtension(dependecies, installedLocalExtension);
|
||||
|
||||
@@ -487,7 +487,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService {
|
||||
}
|
||||
|
||||
const toUpdate = this.local.filter(e => e.outdated && (e.state !== ExtensionState.Installing));
|
||||
return TPromise.join(toUpdate.map(e => this.install(e, false)));
|
||||
return TPromise.join(toUpdate.map(e => this.install(e)));
|
||||
}
|
||||
|
||||
canInstall(extension: IExtension): boolean {
|
||||
@@ -498,7 +498,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService {
|
||||
return !!(extension as Extension).gallery;
|
||||
}
|
||||
|
||||
install(extension: string | IExtension, promptToInstallDependencies: boolean = true): TPromise<void> {
|
||||
install(extension: string | IExtension): TPromise<void> {
|
||||
if (typeof extension === 'string') {
|
||||
return this.extensionService.install(extension);
|
||||
}
|
||||
@@ -514,7 +514,7 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService {
|
||||
return TPromise.wrapError<void>(new Error('Missing gallery'));
|
||||
}
|
||||
|
||||
return this.extensionService.installFromGallery(gallery, promptToInstallDependencies);
|
||||
return this.extensionService.installFromGallery(gallery);
|
||||
}
|
||||
|
||||
setEnablement(extension: IExtension, enable: boolean, workspace: boolean = false): TPromise<void> {
|
||||
|
||||
@@ -371,7 +371,7 @@ class WelcomePage {
|
||||
if (!extension) {
|
||||
return false;
|
||||
}
|
||||
return this.extensionManagementService.installFromGallery(extension, false)
|
||||
return this.extensionManagementService.installFromGallery(extension)
|
||||
.then(() => {
|
||||
// TODO: Do this as part of the install to avoid multiple events.
|
||||
return this.extensionEnablementService.setEnablement(extensionSuggestion.id, false);
|
||||
|
||||
Reference in New Issue
Block a user