* Copilot not working in Remote windows (fix #236537) * 2nd fix for #236537: install extension everywhere even when it is installed locally if `installEverywhere` is setrelease/1.96 1.96.2
parent
820447acdc
commit
fabdb6a30b
|
@ -26,7 +26,6 @@ import { IConfigurationService } from '../../../../platform/configuration/common
|
|||
import { ContextKeyExpr, IContextKeyService } from '../../../../platform/contextkey/common/contextkey.js';
|
||||
import { IContextMenuService } from '../../../../platform/contextview/browser/contextView.js';
|
||||
import { IDialogService } from '../../../../platform/dialogs/common/dialogs.js';
|
||||
import { IExtensionManagementService } from '../../../../platform/extensionManagement/common/extensionManagement.js';
|
||||
import { ExtensionIdentifier } from '../../../../platform/extensions/common/extensions.js';
|
||||
import { IInstantiationService } from '../../../../platform/instantiation/common/instantiation.js';
|
||||
import { ILogService } from '../../../../platform/log/common/log.js';
|
||||
|
@ -1042,9 +1041,9 @@ class ChatSetupContext extends Disposable {
|
|||
@IStorageService private readonly storageService: IStorageService,
|
||||
@IWorkspaceContextService private readonly workspaceContextService: IWorkspaceContextService,
|
||||
@IExtensionService private readonly extensionService: IExtensionService,
|
||||
@IExtensionManagementService private readonly extensionManagementService: IExtensionManagementService,
|
||||
@IWorkbenchExtensionEnablementService private readonly extensionEnablementService: IWorkbenchExtensionEnablementService,
|
||||
@ILogService private readonly logService: ILogService
|
||||
@ILogService private readonly logService: ILogService,
|
||||
@IExtensionsWorkbenchService private readonly extensionsWorkbenchService: IExtensionsWorkbenchService,
|
||||
) {
|
||||
super();
|
||||
|
||||
|
@ -1069,9 +1068,9 @@ class ChatSetupContext extends Disposable {
|
|||
}
|
||||
}));
|
||||
|
||||
const extensions = await this.extensionManagementService.getInstalled();
|
||||
const extensions = await this.extensionsWorkbenchService.queryLocal();
|
||||
const defaultChatExtension = extensions.find(value => ExtensionIdentifier.equals(value.identifier.id, defaultChat.extensionId));
|
||||
this.update({ installed: !!defaultChatExtension && this.extensionEnablementService.isEnabled(defaultChatExtension) });
|
||||
this.update({ installed: !!defaultChatExtension?.local && this.extensionEnablementService.isEnabled(defaultChatExtension.local) });
|
||||
}
|
||||
|
||||
update(context: { installed: boolean }): Promise<void>;
|
||||
|
|
|
@ -2368,8 +2368,9 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension
|
|||
if (extension?.isMalicious) {
|
||||
throw new Error(nls.localize('malicious', "This extension is reported to be problematic."));
|
||||
}
|
||||
// TODO: @sandy081 - Install the extension only on servers where it is not installed
|
||||
// Do not install if requested to enable and extension is already installed
|
||||
if (!(installOptions.enable && extension?.local)) {
|
||||
if (installOptions.installEverywhere || !(installOptions.enable && extension?.local)) {
|
||||
if (!installable) {
|
||||
if (!gallery) {
|
||||
const id = isString(arg) ? arg : (<IExtension>arg).identifier.id;
|
||||
|
@ -2741,10 +2742,11 @@ export class ExtensionsWorkbenchService extends Disposable implements IExtension
|
|||
return this.extensionManagementService.installVSIX(vsix, manifest, installOptions);
|
||||
}
|
||||
|
||||
private installFromGallery(extension: IExtension, gallery: IGalleryExtension, installOptions?: InstallOptions): Promise<ILocalExtension> {
|
||||
private installFromGallery(extension: IExtension, gallery: IGalleryExtension, installOptions?: InstallExtensionOptions): Promise<ILocalExtension> {
|
||||
installOptions = installOptions ?? {};
|
||||
installOptions.pinned = extension.local?.pinned || !this.shouldAutoUpdateExtension(extension);
|
||||
if (extension.local) {
|
||||
// TODO: @sandy081 - Install the extension only on servers where it is not installed
|
||||
if (!installOptions.installEverywhere && extension.local) {
|
||||
installOptions.productVersion = this.getProductVersion();
|
||||
installOptions.operation = InstallOperation.Update;
|
||||
return this.extensionManagementService.updateFromGallery(gallery, extension.local, installOptions);
|
||||
|
|
|
@ -475,7 +475,7 @@ export class ExtensionManagementService extends Disposable implements IWorkbench
|
|||
installOptions = { ...(installOptions || {}), isMachineScoped };
|
||||
}
|
||||
|
||||
if (installOptions.installEverywhere || (!installOptions.isMachineScoped && this.isExtensionsSyncEnabled())) {
|
||||
if (!installOptions.isMachineScoped && this.isExtensionsSyncEnabled()) {
|
||||
if (this.extensionManagementServerService.localExtensionManagementServer
|
||||
&& !servers.includes(this.extensionManagementServerService.localExtensionManagementServer)
|
||||
&& await this.extensionManagementServerService.localExtensionManagementServer.extensionManagementService.canInstall(gallery) === true) {
|
||||
|
@ -606,7 +606,7 @@ export class ExtensionManagementService extends Disposable implements IWorkbench
|
|||
}
|
||||
}
|
||||
|
||||
private async validateAndGetExtensionManagementServersToInstall(gallery: IGalleryExtension, installOptions?: InstallOptions): Promise<IExtensionManagementServer[]> {
|
||||
private async validateAndGetExtensionManagementServersToInstall(gallery: IGalleryExtension, installOptions?: IWorkbenchInstallOptions): Promise<IExtensionManagementServer[]> {
|
||||
|
||||
const manifest = await this.extensionGalleryService.getManifest(gallery, CancellationToken.None);
|
||||
if (!manifest) {
|
||||
|
@ -615,8 +615,8 @@ export class ExtensionManagementService extends Disposable implements IWorkbench
|
|||
|
||||
const servers: IExtensionManagementServer[] = [];
|
||||
|
||||
// Install Language pack on local and remote servers
|
||||
if (isLanguagePackExtension(manifest)) {
|
||||
// Install everywhere if asked to install everywhere or if the extension is a language pack
|
||||
if (installOptions?.installEverywhere || isLanguagePackExtension(manifest)) {
|
||||
servers.push(...this.servers.filter(server => server !== this.extensionManagementServerService.webExtensionManagementServer));
|
||||
} else {
|
||||
const server = this.getExtensionManagementServerToInstall(manifest);
|
||||
|
|
Loading…
Reference in New Issue