VS Code拡張機能の.vsixファイルを手動でダウンロードする方法
問題の背景
Visual Studio Code Marketplaceでは現在、拡張機能ページから直接.vsixファイルをダウンロードするUIが公式に提供されていません。これは特に以下のような状況で問題となります:
- オフライン環境の開発マシンに拡張機能をインストールする必要がある場合
- ネットワーク制限のある環境での作業
- 特定バージョンの拡張機能をアーカイブする必要がある場合
公式ドキュメントや従来の解決策も更新が追いつかず、多くのユーザーが以下の困難に直面しています:
- Marketplace UIにダウンロードオプションが表示されない
- 過去の方法(URL構造変更前の手法)が機能しない
- 拡張機能の開発元が個別に.vsixを提供していない
重要なポイント
MarketplaceのバックエンドAPIは依然として.vsixファイルを提供しており、正しいURL構造を知っていれば直接ダウンロードが可能です
解決策
方法1: URLを手動で構築する(公式APIの活用)
最も信頼性の高い方法で、以下のステップで実現できます:
拡張機能の識別子を取得:
- MarketplaceのURLから
itemName
を取得(例:ms-python.python
) .
で分割して公開者(publisher)とパッケージ名に分離:jsconst [publisher, package] = 'ms-python.python'.split('.');
- MarketplaceのURLから
バージョン番号を特定:
- 拡張機能ページの「Version History」タブから正確なバージョンをコピー
- 例:
2024.17.2024100401
ターゲットプラットフォームを決定:
markdown| プラットフォーム | targetPlatform値 | |------------------------|-------------------| | Windows x64 | `win32-x64` | | macOS Intel | `darwin-x64` | | macOS Apple Silicon | `darwin-arm64` | | Linux x64 | `linux-x64` | | Linux ARM64 | `linux-arm64` | | Universal(全プラットフォーム対応)| パラメータ省略可 |
URLを組み立てる:
texthttps://marketplace.visualstudio.com/_apis/public/gallery/publishers/ [publisher]/vsextensions/[package]/[version]/vspackage ?targetPlatform=[platform]
実例:
https://marketplace.visualstudio.com/_apis/public/gallery/publishers/ ms-python/vsextensions/python/ 2024.17.2024100401/vspackage?targetPlatform=win32-x64
注意点
- 拡張機能がUniversalタイプの場合、
targetPlatform
パラメータは不要 - 不正なURLは404エラーとなるため、各要素の正確性が必須
方法2: ブラウザ拡張機能を利用する
簡単な解決策を求める場合:
- ChromeウェブストアでVisual Studio Marketplace Enhancementsをインストール
- 拡張機能ページにVSIXダウンロードボタンが自動追加される
方法3: Tampermonkeyスクリプトで自動化
より高度な自動化ソリューション:
js
// ==UserScript==
// @name VS Marketplace VSIX Downloader
// @match https://marketplace.visualstudio.com/items*
// ==/UserScript==
const PLATFORM_MAP = {
'Win32': 'win32-x64',
'Linux x86_64': 'linux-x64',
'MacIntel': 'darwin-x64'
};
function addDownloadLinks() {
const itemName = new URLSearchParams(location.search).get('itemName');
if (!itemName) return;
const [publisher, pkg] = itemName.split('.');
const platform = PLATFORM_MAP[navigator.platform] || '';
document.querySelectorAll('.version-row').forEach(row => {
const verCell = row.querySelector('.version-cell');
const version = verCell.textContent.trim();
const vsixUrl = `https://marketplace.visualstudio.com/_apis/public/gallery/publishers/${publisher}/vsextensions/${pkg}/${version}/vspackage${platform ? `?targetPlatform=${platform}` : ''}`;
if (!verCell.querySelector('a')) {
const link = document.createElement('a');
link.href = vsixUrl;
link.textContent = version;
link.download = true;
verCell.textContent = '';
verCell.appendChild(link);
}
});
}
// ページ更新時に実行
setInterval(addDownloadLinks, 1000);
方法4: Open VSX Registryの利用
オープンソースの代替リポジトリを使用する方法:
- https://open-vsx.org/にアクセス
- 拡張機能を検索
- バージョン選択ドロップダウンから特定バージョンを選択
- ダウンロードボタンでVSIXを直接取得
メリット
- 公式Marketplaceにない過去バージョンが利用可能
- ダウンロード制限なし
方法5: ソースからVSIXをビルド(最終手段)
上記方法が使えない場合の最終オプション:
bash
# Node.js環境が必要
npm install -g @vscode/vsce
# 拡張機能のリポジトリをクローン
git clone https://github.com/拡張機能リポジトリ.git
cd 拡張機能ディレクトリ
# 特定バージョンにチェックアウト
git checkout vX.Y.Z
# VSIXをパッケージング
vsce package
ユースケース別推奨ソリューション
- 通常のダウンロード: 方法1(URL手動構築)または方法2(ブラウザ拡張)
- オフライン環境移行: 方法4(Open VSX)で全バージョン一括取得
- エンタープライズ環境: 方法3(Tampermonkeyスクリプト)を標準化
- 非公開拡張機能: 方法5(ソースからビルド)
注意事項
VS Codeのバージョン:
- v1.96以降では
Extensions: Download Extension
コマンドが利用可能 - 古いバージョンを使用中の場合はアップデート推奨
- v1.96以降では
セキュリティ:
- サードパーティ製ツールは提供元を確認
- ダウンロードしたVSIXファイルはウイルススキャンを推奨
著作権:
- 拡張機能のライセンス条件を遵守
- 再配布には制限がある場合が多い
代替手段の比較表
方法 | 難易度 | 最新バージョン対応 | 過去バージョン対応 | 要追加ツール |
---|---|---|---|---|
URL手動構築 | 中 | ○ | ○ | × |
ブラウザ拡張機能 | 易 | ○ | △ | Chrome |
Tampermonkeyスクリプト | 高 | ○ | ○ | Tampermonkey |
Open VSX Registry | 易 | ○ | ◎ | × |
ソースからのビルド | 高 | △ | ○ | Node.js環境 |
最終的なまとめ
- 主流ソリューション:URL手動構築(方法1) が最も信頼性が高い
- 簡易アクセス需要:ブラウザ拡張(方法2) が即時解決を実現
- 大規模環境では:Open VSX(方法4) の利用が管理を効率化
- 特殊状況では:ソースビルド(方法5) が最終的な解決策となる
MarketplaceのUI変更にもかかわらず、上記のテクニックを組み合わせることで、あらゆる環境で.vsixファイルを確実に入手可能です。ネットワーク環境や技術レベルに応じて最適な方法を選択してください。