新しもの好きプログラマの耳より情報ブログ

仕事でもあるプログラミングについて役に立ちそうな情報を発信していこうというブログです。役に立たなそうな情報はfacebookで。

指定した構成のVisualStudioをコマンド一発でインストールする方法(WinGet構成ファイル(プレビュー版))

WinGetのプレビュー機能「WinGet構成ファイル」を使うと、VisualStudioの構成ファイルインポートのような少し複雑なセットアップも自動化できる。

MSのサイトに必要な情報は一通り書いてあるが、情報量が多いので「最低限これをやりたい」という時の手順がちょっと分かりづらい。

というわけで、「Visual Studio 2022を、.vsconfigファイルで構成を指定してインストールする」だけの最低限の手順をこの記事にまとめる。Windows 10 22H2環境で動作確認済み。(DevHomeと違って、Win10でも実行可能)

次の順で説明する。

  1. 構成ファイルを作成する手順
  2. インストールする環境での手順

1の手順を一度終えてしまえば、あとはインストールしたい環境で2の手順を実行すれば良い。

構成ファイル作成側の手順

  1. configuration.dsc.yamlという名前のファイルを作成する。
  2. ※1の内容を書いて保存する。

※1

# yaml-language-server: $schema=https://aka.ms/configuration-dsc-schema/0.2
properties:
  resources:
    - resource: Microsoft.WinGet.DSC/WinGetPackage
      id: vsPackage
      directives:
        description: Install Visual Studio 2022 Enterprise
        allowPrerelease: true
      settings:
        id: Microsoft.VisualStudio.2022.Enterprise
        source: winget
    - resource: Microsoft.VisualStudio.DSC/VSComponents
      dependsOn:
        - vsPackage
      directives:
        description: Install required VS workloads
        allowPrerelease: true
      settings:
        productId: Microsoft.VisualStudio.Product.Enterprise
        channelId: VisualStudio.17.Release
        includeRecommended: true
        vsConfigFile: '${WinGetConfigRoot}\.vsconfig'
  configurationVersion: 0.2.0

簡単に内容を説明する。

  1. 1行目に、作成するファイルの形式を書く。今回はVer.0.2
  2. 2行目以降に、インストール対象のリソースを記載する。ここでは、まずwingetでVS2022Ent.をインストール。その次に.vsconfigを使ってコンポーネントをインストール。という2つ。.vsconfigファイルは、wingetを実行するフォルダに置くものとする。('${WinGetConfigRoot}.vsconfig')
  3. Ver.0.2なので、最後の行に「configurationVersion: 0.2.0」を記載する(JSONとして成立していれば最後の行にする必要は無い)

このようになっているので、このファイル1つで、まっさらな環境に対して指定した構成のVisualStudioをインストールできる。

インストールする環境での手順

初回のみ

  1. WinGetのプレビューバージョンをインストール
  2. コマンドプロンプトwinget settings を入力するとjsonファイルが関連付けで開かれるので、notepadなどを選んで開く
  3. ※2のように追記して保存して閉じ、「WinGet構成ファイル」プレビュー機能を有効にする

※2

追記する内容:

    "experimentalFeatures": {
        "configuration": true
    },

変更前(例):

{
    "$schema": "https://aka.ms/winget-settings.schema.json",

    // For documentation on these settings, see: https://aka.ms/winget-settings
    // "source": {
    //    "autoUpdateIntervalInMinutes": 5
    // },
}

変更後:

{
    "$schema": "https://aka.ms/winget-settings.schema.json",

    // For documentation on these settings, see: https://aka.ms/winget-settings
    // "source": {
    //    "autoUpdateIntervalInMinutes": 5
    // },
    "experimentalFeatures": {
        "configuration": true
    },
}

インストール

  1. 作成済みのconfiguration.dsc.yamlと使用する.vsconfigファイルを同じフォルダへ置く
  2. コマンドプロンプトを開いて、上記ファイルを置いたフォルダをカレントにする
  3. コマンド winget configure -f configuration.dsc.yaml を実行
  4. 長めの英文で警告が出るので、問題なければyを入力して実行(大雑把に言うと「構成ファイルの通りにインストールするからな。MSは責任取らないぞ。良いか?」という趣旨)

あとは待つだけ。