web-dev-qa-db-fra.com

Comment installer des extensions VSCode hors ligne?

J'ai installé VS Code sur une machine qui n'est pas et ne peut pas être connectée à Internet. Selon la documentation , je peux installer une extension à partir de la ligne de commande si j'ai le .vsix, mais je ne sais pas comment obtenir le .vsix du marché.

Comment puis-je télécharger le .vsix pour une extension hébergée sur le marché ?

112
blachniet

MISE À JOUR 2017-12-13

Vous pouvez maintenant télécharger l'extension directement à partir du marché .

enter image description here

A partir de VSCode 1.7.1, faire glisser ou ouvrir l'extension ne fonctionne plus. Pour l'installer manuellement, vous devez:

  • ouvrir la barre latérale des extensions
  • cliquez sur les ellipses dans le coin supérieur droit
  • choisissez Installer à partir de VSIX

Install from VSIX...


Ancienne méthode

Selon la documentation , il est possible de télécharger directement une extension:

L'URL de téléchargement direct d'une extension se présente sous la forme:

https://${publisher}.gallery.vsassets.io/_apis/public/gallery/publisher/${publisher}/extension/${extension name}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage

Cela signifie que pour télécharger l'extension, vous devez savoir

  • le nom de l'éditeur
  • la version
  • le nom de l'extension

Vous pouvez trouver toutes ces informations dans l'URL.

Exemple

Voici un exemple pour télécharger une installation de l’extension C# v1.3.0:

Éditeur, extension et version

Vous pouvez trouver l'éditeur et les noms des extensions sur la page d'accueil de l'extension dans son URL:

https://marketplace.visualstudio.com/items?itemName= ms-vscode . csharp

Ici, l'éditeur est ms-vscode et le nom de l'extension est csharp.

La version se trouve à droite dans la zone Plus d'infos .

Pour le télécharger, vous devez créer un lien à partir du modèle ci-dessus:

https://ms-vscode.gallery.vsassets.io/_apis/public/gallery/publisher/ms-vscode/extension/csharp/1.3.0/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage

Tous les packages auront le même nom Microsoft.VisualStudio.Services.VSIXPackage . Vous devrez donc le renommer après le téléchargement si vous souhaitez savoir quel package il s'agissait ultérieurement.

Installation

Pour installer l'extension

  • Renommez le fichier et donnez-lui l'extension *.vsix
  • Ouvrez VS Code, accédez à File > Open File... ou Ctrl+O et sélectionnez le fichier .vsix.
  • Si tout se passe bien, vous devriez voir ce message en haut de la fenêtre:

L'extension a été installée avec succès. Redémarrez pour l'activer.

174
t3chb0t

en ajoutant à la réponse de t3chb0t, ne sachant pas pourquoi l'option de téléchargement n'est pas visible, nous avons donc créé un patch pour ceux qui utilisent GreaseMonkey/TamperMonkey: vous pouvez trouver le code Gist ici

Ou vous pouvez simplement coller les lignes ci-dessous dans la console de votre navigateur et le lien apparaîtra comme par magie:

let version = document.querySelector('.ux-table-metadata > tbody:nth-child(1) > tr:nth-child(1) > td:nth-child(2) > div:nth-child(1)').innerText
    , itemDetails = window.location.search.replace('?', '').split('&').filter(str => !str.indexOf('itemName')).map(str => str.split('=')[1])[0]
    , [author, extension] = itemDetails.split('.')
    , lAuthor = author.toLowerCase()
    , href = `https://${lAuthor}.gallery.vsassets.io:443/_apis/public/gallery/publisher/${author}/extension/${extension}/${version}/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage`
    , element = document.createElement('a');


element.href = href;
element.className = 'vscode-moreinformation dark';
element.innerHTML = 'download .vsix file';
element.download  = `${extension}.${version}.vsix`;
document.querySelector('.vscode-install-info-container').appendChild(element);
19
mido

Toutes ces suggestions sont bonnes, mais assez pénibles à suivre, car exécuter le code pour construire l’URL ou construire cette URL insensée à la main est assez ennuyant ...

J'ai donc créé une application Web rapide pour faciliter les choses. Il suffit de coller l’URL de l’extension souhaitée et le téléchargement de votre extension déjà nommée: publisher-extension-version.vsix.

J'espère que quelqu'un le trouvera utile: http://vscode-offline.herokuapp.com/

14
Yaakov Chaikin

À partir d’aujourd’hui, l’URL de téléchargement de la version dernière de l’extension est incorporée textuellement dans le source de la page de Marketplace, par exemple. source à l'URL:

https://marketplace.visualstudio.com/items?itemName=lukasz-wronski.ftp-sync

contient la chaîne:

https://lukasz-wronski.gallerycdn.vsassets.io/extensions/lukasz-wronski/ftp-sync/0.3.3/1492669004156/Microsoft.VisualStudio.Services.VSIXPackage

J'utilise la suite Python regexp pour extraire l'URL dl:

urlre = re.search(r'source.+(http.+Microsoft\.VisualStudio\.Services\.VSIXPackage)', content)
if urlre:
    return urlre.group(1)
4
LetMeSOThat4U

Je voulais lancer une option de téléchargement de PowerShell sur la pile au cas où quelqu'un d'autre l'aurait rencontré. J'ai plusieurs scénarios hors ligne et je lance cela en boucle pour télécharger et mettre à jour toutes les extensions que j'utilise hors ligne.

$page = Invoke-WebRequest -Uri 'https://marketplace.visualstudio.com/items?itemName=ms-vscode.PowerShell'

$details = ( $page.Scripts | ? {$_.class -eq 'vss-extension'}).innerHTML | Convertfrom-Json

$extensionName = $details.extensionName 
$publisher     = $details.publisher.publisherName
$version       = $details.versions.version

Invoke-WebRequest -uri "$($details.versions.fallbackAssetUri)/Microsoft.VisualStudio.Services.VSIXPackage" `
                  -OutFile "C:\Scripts\extensions\$publisher.$extensionName.$version.VSIX"
3
Adam Haynes

Ajout à l'excellente réponse de t3chb0t - Utilisez ces commandes PowerShell pour installer toutes les extensions VSCode dans un dossier:

cd C:\PathToFolderWithManyDownloadedExtensionFiles
Get-ChildItem . -Filter *.vsix | ForEach-Object { code --install-extension $_.FullName }

Rechargez ensuite le VSCode pour terminer l’installation.

2
Oren Chapo

Maintenant, vous pouvez télécharger une extension directement dans la section "Ressources", il y a un lien "Télécharger une extension", j'espère que ces informations sont toujours utiles.

1
Luis

Si vous avez une version spécifique (héritée) de VSCode sur votre instance hors ligne, l'extraction des dernières extensions risque de ne pas s'intégrer correctement.

Pour vous assurer que VSCode et les extensions fonctionnent ensemble, ils doivent tous être installés ensemble sur la machine en ligne. Cela résout toutes les dépendances (avec des versions spécifiques) et garantit la configuration exacte de l'instance hors ligne.

Étapes rapides:

Installez la version VSCode, désactivez la mise à jour et installez les extensions. Copiez les extensions à partir de l'emplacement d'installation et placez-les sur la machine cible.

Étapes détaillées:

Installez la version exacte de VSCode sur la machine en ligne. Puis désactivez les mises à jour en allant à File -> Preferences -> Settings. Dans la fenêtre Settings, sous User Settings -> Application, accédez à la section Update et modifiez le paramètre pour Channel en none. Cela empêche VSCode d'accéder à Internet et de mettre à jour automatiquement vos versions au plus tard.

Accédez ensuite à la section Extensions VSCode et installez toutes les extensions souhaitées. Copiez les extensions installées à partir de leur emplacement d'installation (avec Windows son C:\Users\<username>\.vscode\extensions) vers le même emplacement sur la machine cible.

Fonctionne parfaitement.

0
petah

Pour les utilisateurs de Python, le modèle à utiliser avec l'excellente réponse de t3chbot est le suivant:

https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ms-python/vsextensions/python/{version_number}/vspackage

assurez-vous de faire défiler vers la droite pour voir où vous devez entrer le numéro de version.

0

Si vous recherchez une solution scriptée:

  1. Obtenir une URL de téléchargement binaire: vous pouvez utiliser une API, mais sachez qu’il n’ya pas de documentation à ce sujet. Cette API peut renvoyer une URL pour télécharger les fichiers .vsix (voir l'exemple ci-dessous).
  2. Télécharger le binaire
  3. Soigneusement unzip le binaire dans ~/.vscode/extensions/: vous devez modifier le nom du répertoire décompressé, supprimer un fichier et déplacer/renommer un autre.

Pour l'API, commencez par examiner l'exemple suivant et les astuces sur la modification de la tête de requête en https://github.com/Microsoft/vscode/blob/master/src/vs/platform/extensionManagement/node/extensionGalleryService. ts .

POST https://marketplace.visualstudio.com/_apis/public/gallery/extensionquery?api-version=5.1-preview HTTP/1.1
content-type: application/json

{
    "filters": [
        {
        "criteria": [
            {
                "filterType": 8,
                "value": "Microsoft.VisualStudio.Code",
            },
            {
                "filterType": 7,
                "value": "ms-python.python",
            }
        ],
        "pageNumber": 1,
        "pageSize": 10,
        "sortBy": 0,
        "sortOrder": 0,
        }
    ],
    "assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"],
    "flags": 514,
}

Explications à l'exemple ci-dessus:

  • "filterType": 8 - FilterType.Targetplus de FilterTypes
  • "filterType": 7 - FilterType.ExtensionNameplus de FilterTypes
  • "flags": 514 - 0x2 | 0x200 - Flags.IncludeFiles | Flags.IncludeLatestVersionOnly - plus de drapeaux
    • pour obtenir une valeur décimale d'indicateur, vous pouvez exécuter python -c "print(0x2|0x200)"
  • "assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"] - Pour obtenir uniquement le lien vers le fichier .vsix _ plusieurs AssetTypes
0
m4js7er