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é ?
Vous pouvez maintenant télécharger l'extension directement à partir du marché .
A partir de VSCode 1.7.1, faire glisser ou ouvrir l'extension ne fonctionne plus. Pour l'installer manuellement, vous devez:
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
Vous pouvez trouver toutes ces informations dans l'URL.
Voici un exemple pour télécharger une installation de l’extension C# v1.3.0
:
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:
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.
Pour installer l'extension
*.vsix
VS Code
, accédez à File > Open File...
ou Ctrl+O
et sélectionnez le fichier .vsix
.L'extension a été installée avec succès. Redémarrez pour l'activer.
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);
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/
À 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)
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"
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.
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.
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.
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.
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.
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.
Si vous recherchez une solution scriptée:
.vsix
(voir l'exemple ci-dessous).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.Target
plus de FilterTypes"filterType": 7
- FilterType.ExtensionName
plus de FilterTypes"flags": 514
- 0x2 | 0x200
- Flags.IncludeFiles | Flags.IncludeLatestVersionOnly
- plus de drapeauxpython -c "print(0x2|0x200)"
"assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]
- Pour obtenir uniquement le lien vers le fichier .vsix
_ plusieurs AssetTypes