対象バージョン: Windows10 22H2以降
対象読者:
- Windowsの基礎的な用語がわかる
- wingetの利用方法がわかる
TL;DR
以下のコマンドを実行します。VS Codeの設定は私の環境では保持されていました。
winget install Microsoft.VisualStudioCode --force --override "/VERYSILENT /SP- /SUPPRESSMSGBOXES /mergetasks=addcontextmenufiles,addcontextmenufolders,addcontextmenubackground,addtopath"
winget install Microsoft.VisualStudioCode --force --override "/VERYSILENT /SP- /SUPPRESSMSGBOXES /mergetasks=addcontextmenufiles,addcontextmenufolders,addcontextmenubackground,addtopath" --scope machine
解説
wingetでVS Codeをインストールすると非対話的にデフォルト設定でインストールされ、コンテキストメニューから「Code で開く」が消えてしまう場合があります。
そのため、上記のオプションを指定することでデフォルト設定の上書きをしつつ、非対話的にインストールできるようにします。
以下にコマンドを分解して解説します。
winget install Microsoft.VisualStudioCode
wingetコマンドを利用して、VS Codeを実行しているユーザー環境にインストールします。そのままですね。
--force
強制インストールです。すでにVS Codeがインストールされている場合に使います。新規インストール時には不要ですが、「Code で開く」項目を復活させるという意味ではすでにVS Codeがインストール済みであるという前提です。
ちなみに私の環境ではVS Codeの設定内容が保持されていました。
--override
インストーラーへのコマンドオプションを強制的に上書きするオプションです。このオプションの後にダブルクォーテーション(")でくくったコマンドオプション文字列を記述します。
VS Codeの場合、記事執筆時点ではユーザー環境版はInno Setupというツールでインストーラーが作られており1、以下のオプションはInno Setupに与えられるものです。
/VERYSILENT
インストール中のプログレスバーを表示させないオプションです。
/SP-
起動時に表示されるセットアップ前の確認プロンプトダイアログを表示させずに通過させるオプションです。
/SUPPRESSMSGBOXES
インストール中に発生する可能性のあるメッセージボックス(エラーや警告など)に対して、すべて表示させずにデフォルトの応答を返します。
/mergetasks
GUIでチェックを入れる動作をエミュレートします。=記号の後ろのカンマ区切りのフラグを対象にして操作します。
- addcontextmenufiles: ファイルを右クリックしたときのコンテキストメニューに追加します
- addcontextmenufolders: フォルダーを右クリックしたときのコンテキストメニューに追加します
- addcontextmenubackground: デスクトップやエクスプローラーの空白部分(アイコンのないところ)を右クリックしたときのコンテキストメニューに追加します
-
addtopath:
codeコマンドにパスを通します。コマンドラインから実行できるようになります
--scope
インストールする範囲を指定できます。
- user: デフォルト値。コマンド実行ユーザー環境にのみインストールされます
- machine: コマンド実行したPC全体で利用できるようにインストールされます。インストール中に管理者権限への昇格ダイアログが表示されます
おわりに
これでコマンド一発でレジストリを編集せずにコンテキストメニュー項目を復活させられますが、自動アップデートで消されてしまうのが辛いですね…![]()
参考文献
- microsoft/vscode: Visual Studio Code: https://github.com/microsoft/vscode
- WinGet を使用したアプリケーションのインストールと管理 | Microsoft Learn:
https://learn.microsoft.com/ja-jp/windows/package-manager/winget/