src/vs/workbench/services/extensionManagement/common/webExtensionManagementService.ts/WebExtensionManagementService/install
class WebExtensionManagementService:	async install(location: URI): Promise<ILocalExtension> {
		const manifest = await this.webExtensionsScannerService.scanExtensionManifest(location);
		if (!manifest) {
			throw new Error(`Cannot find packageJSON from the location ${location.toString()}`);
		}

		const identifier = { id: getGalleryExtensionId(manifest.publisher, manifest.name) };
		this.logService.info('Installing extension:', identifier.id);
		this._onInstallExtension.fire({ identifier: identifier });
		try {
			const extension = await this.webExtensionsScannerService.addExtension(location);
			const local = this.toLocalExtension(extension);
			this._onDidInstallExtension.fire({ local, identifier: extension.identifier, operation: InstallOperation.Install });
			return local;
		} catch (error) {
			this._onDidInstallExtension.fire({ error, identifier, operation: InstallOperation.Install });
			throw error;
		}
	}