Visual Studio Code拡張機能をオフラインでインストールするにはどうすればよいですか?


130

インターネットに接続されていない、または接続できないマシンにVisual Studio Codeをインストールしました。ドキュメントよると、私が持っている場合、コマンドラインから拡張機能をインストールできますが、マーケットプレイスから.vsix取得する方法がわかりません.vsix

マーケットプレイスで.vsixホストされいる拡張機能のをダウンロードするにはどうすればよいですか?


download-vsixを使用して、vsixをダウンロードします。すなわち)rajasimon.github.io/...
ラジャ・サイモン

回答:


202

2017年12月13日更新

拡張機能をマーケットプレイスから直接ダウンロードできるようになりました。

ここに画像の説明を入力してください

Visual Studio Code 1.7.1以降、拡張機能のドラッグやオープンは機能しなくなりました。手動でインストールするには、次のことを行う必要があります。

  • 拡張機能のサイドバーを開く
  • 右上隅の省略記号をクリックします
  • VSIXからインストールを選択

VSIXからインストール...


古い方法

ドキュメントによると拡張機能を直接ダウンロードすることが可能です:

拡張機能の直接ダウンロードURLは次の形式です。

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

これは、拡張機能をダウンロードするために知っておく必要があることを意味します

  • 出版社名
  • バージョン
  • 拡張名

この情報はすべてURLにあります。

インストール用のC#v1.3.0拡張機能をダウンロードする例を以下に示します。

パブリッシャー、エクステンション、バージョン

パブリッシャーと拡張機能の名前は、拡張機能のホームページのURL内にあります。

https://marketplace.visualstudio.com/items?itemName= ms-vscodeCシャープ

ここでは、発行元はms-vscodeで、拡張名はcsharpです。

バージョンは、詳細情報領域の右側にあります。

それをダウンロードするには、上のテンプレートからリンクを作成する必要があります。

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

すべてのパッケージは同じ名前のMicrosoft.VisualStudio.Services.VSIXPackageを持つため、後でどのパッケージであるかを知りたい場合は、ダウンロード後に名前を変更する必要があります。

取り付け

拡張機能をインストールするには

  • ファイルの名前を変更し、*.vsix拡張子を付けます
  • Visual Studio Codeを開き、メニューの[ファイル ] → [ファイルを開く...]または[ Ctrl+ ]に移動してO.vsixファイルを選択します
  • すべて問題がなければ、ウィンドウの上部に次のメッセージが表示されます。

拡張機能が正常にインストールされました。再起動して有効にします。


10
拡張ページで使用するブックマークレットを作成しました。それがどれくらい長く機能し続けるか見てみましょう!:javascript:(function() {var ver = document.querySelector("[data-bind='text: version']").innerText; var pub = window.location.href.replace(/.*itemName=(.*?)\.(.*)/,"$1"); var name = window.location.href.replace(/.*itemName=(.*?)\.(.*)/,"$2"); window.location = "https://" + pub + ".gallery.vsassets.io/_apis/public/gallery/publisher/" + pub + "/extension/" + name + "/" + ver + "/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage";})()
TheQuickBrownFox

VS Code 1.7.1(2016年10月)では、インストール手順が機能しませんでした。
Roy Dictus

@RoyDictusが理想的で、VSCodeはインストールする代わりに拡張機能へのリンクを表示します:-| 彼らは何かを変えたに違いない。
t3chb0t 2016年

@RoyDictusが更新を確認します-これでうまくいくはずです。もう一度スクリーンショットを添付します。
t3chb0t 2016年

2
この答えには良い情報があります。ただし、C#は悪い例です。特に、質問は「インターネットに接続されていない、また接続できないマシン」を示しているためです。C#拡張機能は、アクティベーション後にプラットフォーム固有のコンポーネントをダウンロードしようとするため、ここで説明するようにオフラインでインストールすることはできません。代わりに、特定のオフラインパッケージをビルドする必要があります
ヘロタール

19

t3chb0tの答えに追加して、ダウンロードオプションが表示されない理由がわからないため、GreaseMonkey / TamperMonkeyを使用するユーザー向けのパッチを作成しました。ここで要旨コードを見つけることができます

または、ブラウザコンソールに以下の行を貼り付けるだけで、リンクが魔法のように表示されます。

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);

ニースしかしVSCodeは今彼らのウェブサイトにリンクを提供するように冗長
Blowsie

1
@Blowsieが一貫していない、Windowsではリンクが表示される、Linuxでは表示されない
kbolino

15

これらの提案はすべて素晴らしいですが、URLを構築するコードを実行したり、クレイジーなURLを手動で構築したりするのは面倒なので、従うのはちょっと面倒です...

だから、私は物事を簡単にするために簡単なウェブアプリを一緒に投げました。必要な拡張機能のURLを貼り付けるだけで、適切に名前が付けられた拡張機能のダウンロードが発行されます。publisher-extension-version.vsix。

誰かがそれが役に立ったと願っています:http : //vscode-offline.herokuapp.com/


ニースしかしVSCodeは今彼らのウェブサイトにリンクを提供するように冗長
Blowsie

正しい。それは彼らの側のごく最近の追加です。近いうちにサービスを停止するでしょう。
Yaakov Chaikin 2017

@YaakovChaikinリンクが常に表示されるとは限りませんが、サービスは一貫して機能します
kbolino '20

これはカッコいい。残念ながら、他の人がHerokuではなくGitHubページで同様のことをしたとき、ChrisFのようなユーザーは、「GitHubにリンクしないでください」と言ってそれらを削除しました。モデレーターがいじめられるのは悲しいことです。
iconoclast

4

本日現在、拡張機能の最新バージョンのダウンロードURLは、マーケットプレイスのページのソースに逐語的に埋め込まれています。

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

文字列を含む:

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

次のPython正規表現を使用してdl URLを抽出します。

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

3

他の誰かがこれに遭遇した場合に備えて、PowerShellダウンロードオプションを山に投げたかったのです。いくつかのオフラインシナリオがあり、これをループで実行して、オフラインで使用するすべての拡張機能をダウンロードして更新します。

$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"

2

t3chb0tの優れた答えに追加-これらのPowerShellコマンドを使用して、フォルダーにすべてのVSCode拡張機能をインストールします。

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

次に、VSCodeをリロードしてインストールを完了します。


1

「リソース」セクションで拡張機能を直接ダウンロードできるようになりました。「拡張機能のダウンロード」リンクがあります。この情報が引き続き役立つことを願っています。


1

PowerShellスクリプトを使用してマーケットプレイスから拡張機能をダウンロードするスクリプトを私の要点に保存しました。それを共有するコメントをお気軽に。

https://gist.github.com/azurekid/ca641c47981cf8074aeaf6218bb9eb58

[CmdletBinding()]
param
(
    [Parameter(Mandatory = $true)]
    [string] $Publisher,

    [Parameter(Mandatory = $true)]
    [string] $ExtensionName,

    [Parameter(Mandatory = $true)]
    [ValidateScript( {
            If ($_ -match "^([0-9].[0-9].[0-9])") {
                $True
            }
            else {
                Throw "$_ is not a valid version number. Version can only contain digits"
            }
        })]
    [string] $Version,

    [Parameter(Mandatory = $true)]
    [string] $OutputLocation
)

Set-StrictMode -Version Latest
$ErrorActionPreference = "Stop"

Write-Output "Publisher:        $($Publisher)"
Write-Output "Extension name:   $($ExtensionName)"
Write-Output "Version:          $($Version)"
Write-Output "Output location   $($OutputLocation)"

$baseUrl = "https://$($Publisher).gallery.vsassets.io/_apis/public/gallery/publisher/$($Publisher)/extension/$($ExtensionName)/$($Version)/assetbyname/Microsoft.VisualStudio.Services.VSIXPackage"
$outputFile = "$($Publisher)-$($ExtensionName)-$($Version).visx"

if (Test-Path $OutputLocation) {
    try {
        Write-Output "Retrieving extension..."
        [uri]::EscapeUriString($baseUrl) | Out-Null
        Invoke-WebRequest -Uri $baseUrl -OutFile "$OutputLocation\$outputFile"
    }
    catch {
        Write-Error "Unable to find the extension in the marketplace"
    }
}
else {
    Write-Output "The Path $($OutputLocation) does not exist"
}

0

Pythonユーザーの場合、t3chbotの優れた答えで使用するパターンは次のようになります。

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

必ず右にスクロールして、バージョン番号を入力する必要がある場所を確認してください。


0

スクリプトによる解決策を探している場合:

  1. バイナリのダウンロードURLを取得します。APIを使用できますが、ドキュメントがないので注意してください。このAPIは、.vsixファイルをダウンロードするためのURLを返すことができます(下の例を参照)
  2. バイナリをダウンロードする
  3. unzipバイナリを慎重に~/.vscode/extensions/:解凍したディレクトリ名を変更し、1つのファイルを削除して、別のファイルを移動/名前変更する必要があります。

APIの場合は、まず次の例を調べ、ヒントの場合はリクエストヘッドを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,
}

上記の例の説明:

  • "filterType": 8- FilterType.Target その他のFilterTypes
  • "filterType": 7- FilterType.ExtensionName その他のFilterTypes
  • "flags": 514- 0x2 | 0x200- Flags.IncludeFiles | Flags.IncludeLatestVersionOnly- より多くの国旗
    • 実行できるフラグ10進数値を取得するには python -c "print(0x2|0x200)"
  • "assetTypes": ["Microsoft.VisualStudio.Services.VSIXPackage"]- 追加のAssetTypeの.vsixファイルへのリンクのみを取得する

0

オフラインインスタンスに特定の(レガシー)バージョンのVSCodeがある場合、最新の拡張機能をプルすると正しく統合されない可能性があります。

VSCodeと拡張機能が一緒に機能することを確認するには、オンラインマシンにすべて一緒にインストールする必要があります。これにより、(特定のバージョンの)依存関係が解決され、オフラインインスタンスの正確な構成が保証されます。

簡単な手順:

VSCodeバージョンをインストールし、更新をオフにして、拡張機能をインストールします。インストールされている場所から拡張機能をコピーし、ターゲットマシンに配置します。

詳細な手順:

オンラインマシンに正確なバージョンのVSCodeをインストールします。次に、にアクセスして更新をオフにしますFile -> Preferences -> Settings。ではSettings、ウィンドウ、下User Settings -> Applicationに行くUpdateセクション、およびのためのパラメータを変更Channelしますnone。これにより、VSCodeがインターネットにアクセスして、バージョンが最新に自動更新されるのを防ぎます。

次に、VSCode拡張機能セクションに移動し、必要な拡張機能をすべてインストールします。インストールされた拡張機能を、インストール場所(WindowsはC:\Users\<username>\.vscode\extensions)からターゲットマシンの同じ場所にコピーします。

完璧に動作します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.