3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

WinGetでCLIツールを入れるなら、開発者モードをONにしろ、という話

3
Last updated at Posted at 2026-05-03
Page 1 of 45

tl;dr

winget 使うなら、開発者モードは絶対にオン


対象読者

  • Windows ユーザー
  • CLI にそこそこ慣れている
  • winget を使っている、または使いたい

WinGet とは

  • Windows 公式のパッケージ管理ツール
  • 他 OS では apt、yum、Homebrew とか

使い方 (fzf の例)

winget install --id junegunn.fzf

これで fzf コマンドが使えるようになります。


開発者モードとは

本来はWindows でアプリの開発・デプロイ・テスト向け機能を有効にする設定です。


で、WinGet に開発者モードが必要、と?


いいえ
しかし事実上必須レベルの強い推奨。


どういうこと?


これを説明するには、WinGet で CLI アプリをインストールする際の挙動を知る必要があります。


fzf インストールの流れ


(1/3)

以下パスに portable install する:
%LOCALAPPDATA%\Microsoft\WinGet\Packages\junegunn.fzf_Microsoft.Winget.Source_8wekyb3d8bbwe\


(2/3)

以下パスに実行ファイルの シンボリックリンク を作成:
%LOCALAPPDATA%\Microsoft\WinGet\Links\


(3/3)

PATH ユーザー環境変数に以下があるかどうか検証し、なければ追記:
%LOCALAPPDATA%\Microsoft\WinGet\Links\


これらの工程が ユーザー権限 で実行されます。

この時点で、勘の良い方は気づくかもしれませんね。


管理者権限でできること

  • HKLM レジストリや %PROGRAMFILES% への書き込み
  • シンボリックリンク の作成
  • 他、システム全体に影響する操作

開発者モードでは、ユーザー権限でシンボリックリンクを作成できます。

つまり、開発者モードなしでは シンボリックリンク作成に失敗 するわけです。


ということは、開発者モードなしでインストールできない?


いいえ、インストール自体は成功 します。

フォールバック処理による救済措置を行うことで、前例の場合問題なく fzf が使えます。


フォールバック処理

PATHfzf のパスを直接追記する:
%LOCALAPPDATA%\Microsoft\WinGet\Packages\junegunn.fzf_Microsoft.Winget.Source_8wekyb3d8bbwe\


やっぱり開発者モードは不要?


はい、しかし 事実上必須レベルの強い推奨 です。


どういうこと?


あなたはいくつ CLI アプリを入れますか?


atomicparsley, bitwarden, chezmoi, dprint, eza, fastfetch, fzf, gh, ghq, git, glow, gpg, imagemagick, mise-en-place, neovim, psmux, pstop, ngrok, ripgrep, sqlite, worktrunk, zellij ...etc.,


想像してみよう


%LOCALAPPDATA%\Microsoft\WinGet\Packages\<APPID>_Microsoft.Winget.Source_8wekyb3d8bbwe\ がアプリの数だけ PATH に存在する世界


パスが大量に増える状態って、OS を問わずあんまり健全な状態とは言えませんよね?

そして、 Windows では一定閾値を超えると、ある問題が発生 します。


cmd パス 8K 問題

Windows ではパスが 8192byte 以上は、cmd.exe だけ その先を無視してしまいます。


じゃあ私は PowerShell だから関係ない?


いいえ

例えば npm における npm-scripts は既定では cmd.exe に依存しています。


そして、実行時に .\node_modules\.bin\PATH末尾 に追加します。

この時点で 8KB に至っていたらどうなるでしょう?


パス解決が破綻し、結果として……

  • Biome が呼べません
  • Vitest も呼べません
  • もちろん Vinxi もダメです

解決策は?

開発者モードをオン にしましょう


でも私開発者じゃないよ?

WinGet 使うならオン にしましょう


WinGet ちょっとだけなら大丈夫だよね?

大丈夫です……が、インストール数の分鬼長いパスが鎮座してるの、気持ち悪くないですか?


一部例外あり: GUI アプリとかはパスを登録しないものも多いです。
他に %PROGRAMFILES% へインストールしたがるパッケージとかは、問答無用でパスを追記するケースも


すでに PATH が汚れてしまった場合


  1. 開発者モードを有効にする
  2. ターミナルを開き直す
  3. 対象パッケージを再インストール
  4. PATH から不要な WinGet\Packages 配下を削除

注意点: WinGet\Links が逆にハマるケースもある


IMG_6016.png


開発者モードを有効にすると、WinGet は CLI アプリを %LOCALAPPDATA%\Microsoft\WinGet\Links 配下のリンク経由で起動できるようにします。


しかし、Windows SSH 接続して WinGet でインストールしたコマンドを呼ぶと、シンボリックリンクが認識できず、コマンドが失敗します。


この場合、SSH で呼ぶ主要コマンドのみを厳選して、Profile でパスを追加するのがよさそうです。


おしまい!

ご視聴ありがとうございました 🐱

黒音キト@黒猫にゃんにゃんVTuber

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?