Skip to content

VS Code拡張機能の.vsixファイルを手動でダウンロードする方法

問題の背景

Visual Studio Code Marketplaceでは現在、拡張機能ページから直接.vsixファイルをダウンロードするUIが公式に提供されていません。これは特に以下のような状況で問題となります:

  • オフライン環境の開発マシンに拡張機能をインストールする必要がある場合
  • ネットワーク制限のある環境での作業
  • 特定バージョンの拡張機能をアーカイブする必要がある場合

公式ドキュメントや従来の解決策も更新が追いつかず、多くのユーザーが以下の困難に直面しています:

  • Marketplace UIにダウンロードオプションが表示されない
  • 過去の方法(URL構造変更前の手法)が機能しない
  • 拡張機能の開発元が個別に.vsixを提供していない

重要なポイント

MarketplaceのバックエンドAPIは依然として.vsixファイルを提供しており、正しいURL構造を知っていれば直接ダウンロードが可能です

解決策

方法1: URLを手動で構築する(公式APIの活用)

最も信頼性の高い方法で、以下のステップで実現できます:

  1. 拡張機能の識別子を取得

    • MarketplaceのURLからitemNameを取得(例:ms-python.python
    • .で分割して公開者(publisher)とパッケージ名に分離:
      js
      const [publisher, package] = 'ms-python.python'.split('.');
  2. バージョン番号を特定

    • 拡張機能ページの「Version History」タブから正確なバージョンをコピー
    • 例: 2024.17.2024100401
  3. ターゲットプラットフォームを決定

    markdown
    | プラットフォーム       | targetPlatform値  |
    |------------------------|-------------------|
    | Windows x64            | `win32-x64`       |
    | macOS Intel            | `darwin-x64`      |
    | macOS Apple Silicon    | `darwin-arm64`    |
    | Linux x64              | `linux-x64`       |
    | Linux ARM64            | `linux-arm64`     |
    | Universal(全プラットフォーム対応)| パラメータ省略可 |
  4. URLを組み立てる

    text
    https://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: ブラウザ拡張機能を利用する

簡単な解決策を求める場合:

  1. ChromeウェブストアでVisual Studio Marketplace Enhancementsをインストール
  2. 拡張機能ページに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の利用

オープンソースの代替リポジトリを使用する方法:

  1. https://open-vsx.org/にアクセス
  2. 拡張機能を検索
  3. バージョン選択ドロップダウンから特定バージョンを選択
  4. ダウンロードボタンで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(ソースからビルド)

注意事項

  1. VS Codeのバージョン:

    • v1.96以降ではExtensions: Download Extensionコマンドが利用可能
    • 古いバージョンを使用中の場合はアップデート推奨
  2. セキュリティ:

    • サードパーティ製ツールは提供元を確認
    • ダウンロードしたVSIXファイルはウイルススキャンを推奨
  3. 著作権:

    • 拡張機能のライセンス条件を遵守
    • 再配布には制限がある場合が多い

代替手段の比較表

方法難易度最新バージョン対応過去バージョン対応要追加ツール
URL手動構築×
ブラウザ拡張機能Chrome
TampermonkeyスクリプトTampermonkey
Open VSX Registry×
ソースからのビルドNode.js環境

最終的なまとめ

  • 主流ソリューション:URL手動構築(方法1) が最も信頼性が高い
  • 簡易アクセス需要:ブラウザ拡張(方法2) が即時解決を実現
  • 大規模環境では:Open VSX(方法4) の利用が管理を効率化
  • 特殊状況では:ソースビルド(方法5) が最終的な解決策となる

MarketplaceのUI変更にもかかわらず、上記のテクニックを組み合わせることで、あらゆる環境で.vsixファイルを確実に入手可能です。ネットワーク環境や技術レベルに応じて最適な方法を選択してください。