次の方法で共有


WinGet の構成

WinGet 構成ファイルを使用すると、手動のコンピューターのセットアップとプロジェクトのオンボードを、信頼性が高く反復可能な 1 つのコマンドに統合できます。 これを実現するために、WinGet では次のことが利用されます。

  • Windows コンピューターで開発環境の目的の状態を設定するために必要なすべてのソフトウェア バージョン、パッケージ、ツール、依存関係、設定を一覧表示する YAML 形式の WinGet 構成ファイル。
  • Windows オペレーティング システムの構成を自動化するための PowerShell Desired State Configuration (DSC)
  • 構成プロセスを開始するための Windows パッケージ マネージャーの winget configure コマンド

コンピューターのセットアップとプロジェクトのオンボードの利点

WinGet 構成ファイルを使用する利点は次のとおりです。

  • 無人セットアップ: winget configure コマンドを入力し、Windows パッケージ マネージャーと PowerShell DSC がインストールを自動化し、Windows コンピューターで目的の開発環境を構成するために必要なすべての要件を設定できるようにします。
  • 信頼性が高く反復可能: 新しいチームまたはプロジェクトにオンボードするときに、ソフトウェア、パッケージ、ツール、フレームワークの適切なバージョンを見つけ、開発環境に適したマシン設定を構成することに関する心配がなくなります。これは、それらが YAML 形式 (JSON スキーマを使用) を使用して WinGet 構成ファイルで事前に定義されているためです。
  • オープン ソース コラボレーションをサポート: WinGet 構成ファイルは、GitHub リポジトリでホストできます。このリポジトリでは、問題やコントリビューションを登録したり、セキュリティで保護されたストレージの場所 (OneDrive など) でプライベートに保持したり、プライベート メールやその他のセキュリティで保護されたチャネルを介して共有したりできます。

警告

WinGet 構成ファイルと関連する PowerShell DSC リソースを確認して、適用する前に、それらが信頼できることを確認する必要があります。

WinGet 構成ファイルを使用してコンピューターを構成する

WinGet 構成ファイルを使用してマシンをセットアップするには、構成ファイルをダウンロードし、ダブルクリックして構成を呼び出します。 または、コマンド ラインで winget configure を使用します。 winget configure コマンドを使用するには、WinGet バージョン v1.6.2631 以降を実行している必要があります。

WinGet の構成に関する FAQ

WinGet の構成に関するよく寄せられる質問に対する回答をご覧ください。

WinGet 構成ファイルのしくみはどのようなものですか?

WinGet 構成ファイルは YAML で記述され、開発環境を構成するためにデバイスにインストールされる内容と、コンピューターとインストール済みアプリケーションの構成状態を定義します。

WinGet 構成ファイルは、命令型の従うべき一連の手順ではなく宣言型であり、目的のコンピューターの構成状態の結果を定義します。 Windows パッケージ マネージャーと PowerShell DSC リソースを使用すると、宣言型の WinGet 構成ファイルを使用して、ご自分の環境に設定をインストール、構成、適用でき、その結果、すぐにコード化できる状態になります。

WinGet は構成ファイルを解析して有効であることを確認し、目的の状態を実現するために必要なすべての関連する PowerShell モジュール (DSC リソースを含む) をダウンロードします。 これらのリソースがダウンロードされ、WinGet 構成ファイルの信頼性を確認し、ファイルの安全性を確認したことに同意すると、WinGet は必要なすべてのアサーションのテストと目的の状態の適用を開始します。

WinGet 構成ファイル リソースが順序付けされるシーケンスは、重要ではありません。 一部のインストールおよび構成プロセスは、並列で実行される場合もあります。 アサーションは、各dependsOnで定義されている フィールドに直接対応しています。 リソースにアサーションへの依存関係が含まれている場合は、最初にアサーションがチェックされます。 アサーションが失敗した場合、依存リソースも失敗します。 ただし、構成ファイルは引き続き実行され、アサーションまたはリソースの依存関係の一部が失敗した場合でも、できるだけ多くのタスクを実行し、完了する前にコンピューターができるだけ多くのセットアップ プロセスを進行できるようにします。 構成が完了したら、障害がないかを確認する必要があります。

たとえば、WinGet 構成ファイルを実行すると、次のような結果が表示されることがあります。

Assert:: OsVersion
The configuration unit could not be found.
Apply :: DeveloperMode
  This configuration unity was not run because an assert failed or was false.
Apply :: WinGetPackage [vsPackage]
  This configuration unity was not run because an assert failed or was false.

この例では、オペレーティング システムの必要なバージョンのアサーション チェックが失敗したため、オペレーティング システムのそのアサーションへの依存関係が含まれた DeveloperMode リソースと WinGetPackage リソースも失敗しました。 ただし、構成ファイルに記載されているその他のインストールおよび構成タスクは、引き続き進行します。

WinGet 構成ファイルの宣言型 (非シーケンシャル) の性質の利点は、ファイルに追加される新しいリソースの位置が関係ないことです。 これは、ファイルの下部にリソースを追加するだけで済むため、長い構成ファイルに特に役立ちます。 アサーションと依存関係を適切に定義している限り、シーケンスやセットアップ手順の順番を気にする必要はありません。

WinGet 構成ファイルを実行中で、OSVersion アサーションと依存リソースが失敗している PowerShell ターミナルのスクリーンショット。

WinGet 構成ファイルはどのように使用するのですか?

WinGet 構成ファイルを実行するには、ファイル エクスプローラーでファイルをダブルクリックして実行します。 または、 winget configure コマンドを使用することもできます。

WinGet 構成はどのように作成するのですか?

WinGet 構成ファイルを作成するには、「WinGet 構成ファイルを作成する方法」ドキュメントのガイダンスに従います。

WinGet 構成ファイルの信頼性を確実にするにはどうすればよいですか?

WinGet 構成ファイルの整合性を常に検証することをお勧めします。これを行うには、実行する前に内容を確認し、分離された環境で構成をテストします。 「WinGet 構成ファイルの信頼性を確認する方法」参照してください。

サンプルの WinGet 構成ファイルはどこで入手できますか?

サンプルの WinGet 構成ファイルは、WinGet DSC リポジトリ ( https://aka.ms/dsc.yaml) にあります。

DSC リソースを含む PowerShell モジュールの例はどこで入手できますか?

PowerShell ギャラリーでは、Desired State Configuration (DSC) リソースを含む数百の PowerShell モジュールがホストされています。 [Categories] (カテゴリ) の [DSC Resource] (DSC リソース) フィルターを適用して、検索結果をフィルター処理できます。

PowerShell ギャラリーからの Desired State Configuration PowerShell モジュールの検索結果

WinGet 構成ファイルの使用をブロックするポリシーを組織に設定できますか?

はい。 グループ ポリシー オブジェクトEnableWindowsPackageManagerConfiguration および EnableWindowsPackageManagerConfigurationExplanation は、組織内の WinGet 構成機能を無効にするために使用できます。

WinGet 構成のトラブルシューティング

WinGet 構成が失敗する最も一般的な理由は、目的の状態を適用するために管理アクセスを必要とする PowerShell DSC リソースによるものです。 すべての DSC リソースで、エラーの明示的な理由が明らかにされるわけではありません。

より一般的なトラブルシューティングに関する問題は、近日中に追加される予定です。 それまでは、GitHub の WinGet CLI リポジトリに登録されている関連の問題を確認してください。