mcpField
W
winui-setup

winui-setup

github.com/microsoft開発490169 回インストール3 週間前に更新
リポジトリ

winui-setup について

winui-setupは、WinUI開発ワークフローの前提条件を検出・管理するスキルです。先に環境を確認し、ユーザー単位のWinApp CLI更新を行い、ワークフローごとの準備状況を報告します。

主な機能

  1. 01.NET SDKとWinApp CLIのバージョン確認
  2. 02WinApp CLIのインストールまたは更新
  3. 03管理者権限が必要な操作の承認確認
  4. 04ワークフロー別要件の確認
  5. 05セットアップ状況の要約

活用シーン

  1. 01WinUI開発用マシンの準備
  2. 02ワークフロー開始前の前提条件確認
  3. 03古いWinApp CLIの更新
  4. 04Native AOTやSandboxの阻害要因の特定

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/microsoft/win-dev-skills --skill winui-setup

インストール後、Claude Code で/winui-setupを入力して読み込まれたか確認します。

詳細

目的

ほかのすべての winui-* スキルが前提とする前提条件をインストールし、確認します。WinApp CLI 0.7 は winapp new を通じて WinUI テンプレートの検出とインストールを行います。テンプレートパックを別途インストールしないでください。 プロジェクトのターゲットフレームワークには、CLI の最小要件より新しい .NET SDK が必要な場合があります。

重要

ユーザー単位の前提条件(WinApp CLI)は、確認を求めずにインストールし、変更内容をユーザーに伝えてください。管理者権限(UAC)や大規模なツールチェーンが必要なものについては、事前に確認してください。.NET SDK、開発者モード、Native AOT ビルドツールが該当します。Windows Sandbox の有効化はユーザー自身が行います。

このスキルは冪等です。最初にすべてを検出し、必要なものだけをインストールまたはアップグレードして、最後に1回だけ概要を表示します。

手順
すべてを検出する

変更を加える前にユーザーが全体の状態を確認できるよう、これらのチェックをまとめて実行します。

$minimumDotNet = [version]'8.0.100'
$minimumWinApp = [version]'0.7.0'

# .NET SDK — project-mode winapp run requires SDK 8.0.100+
$dotnetSdks = @(& dotnet --list-sdks 2>$null) | ForEach-Object {
    $text = ($_ -replace ' \[.*$','').Trim()
    $parsed = $null
    if ([version]::TryParse(($text -split '-')[0], [ref]$parsed)) { $parsed }
}
$dotnetVersion = $dotnetSdks |
    Where-Object { $_ -ge $minimumDotNet } |
    Sort-Object -Descending |
    Select-Object -First 1
$dotnetOk = $null -ne $dotnetVersion

# WinApp CLI — require released 0.7+ for the migrated workflows
$winappCmd = Get-Command winapp -ErrorAction SilentlyContinue
$winappVersion = $null
$winappPrerelease = $false
if ($winappCmd) {
    foreach ($line in @(& winapp --version 2>$null)) {
        $match = [regex]::Match(
            [string]$line,
            '^\s*v?(?<version>\d+\.\d+\.\d+)(?:-(?<prerelease>[0-9A-Za-z.-]+))?(?:\+[0-9A-Za-z.-]+)?\s*$'
        )
        if ($match.Success) {
            $parsed = $null
            if ([version]::TryParse($match.Groups['version'].Value, [ref]$parsed)) {
                $winappVersion = $parsed
                $winappPrerelease = $match.Groups['prerelease'].Success
            }
        }
    }
}
$winappOk = ($winappVersion -ge $minimumWinApp) -and -not $winappPrerelease

# Developer Mode
$devModeOk = ((Get-ItemProperty `
    -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock' `
    -Name AllowDevelopmentWithoutDevLicense -ErrorAction SilentlyContinue
).AllowDevelopmentWithoutDevLicense) -eq 1

一度にステータステーブルを表示します。

.NET SDK >= 8.0.100     [OK] found 10.0.100
WinApp CLI >= 0.7.0     [!] found 0.6.0 — will upgrade
Developer Mode          [X] disabled — needs admin to enable
不足しているものをインストールする
.NET SDK(事前に確認)

SDK インストーラーはマシン全体に適用され、UAC が起動します。最初にユーザーに確認してください。 同意があり、8.0.100 以上の SDK が見つからなかった場合は、推奨 SDK をインストールします。

winget install --id Microsoft.DotNet.SDK.10 --exact --silent --accept-package-agreements --accept-source-agreements

すでに CLI の最小要件と、要求されたプロジェクトのターゲットフレームワーク/global.json の両方を満たす SDK がある場合は、別の SDK をインストールしないでください。CLI の最小要件を満たしていても、8.x SDK で net10.0-windows アプリをビルドできるとは限りません。 基本チェックに合格していても、要求されたプロジェクトで別の SDK が必要な場合は、その要件を報告し、該当する SDK のインストールを提案してください。プロジェクトの準備が完了したと判断しないでください。ユーザーが辞退した場合は、後で使用するコマンドを表示します。

WinApp CLI(管理者権限は不要)

WinApp CLI はユーザー単位の MSIX パッケージなので、確認を求めずにインストールまたはアップグレードし、変更内容をユーザーに伝えてください。winapp が見つからない場合はインストールします。リリース版 0.7.0 より古い場合はアップグレードします。インストール済みのバージョンがすでに最小要件を満たしている場合は、どちらもスキップします。

# When winapp is missing
winget install --id Microsoft.WinAppCli --exact --silent --accept-package-agreements --accept-source-agreements

# When winapp does not meet the released 0.7.0 minimum
winget upgrade --id Microsoft.WinAppCli --exact --silent --accept-package-agreements --accept-source-agreements

winget によるインストールまたはアップグレード後は、PATH を更新します。

$env:Path = [Environment]::GetEnvironmentVariable('Path','Machine') + ';' +
            [Environment]::GetEnvironmentVariable('Path','User')

バージョン検出を再実行します。リリース版 0.7.0 以降が引き続き利用できない場合は、実際のバージョンを報告してセットアップをブロック扱いにします。古いコマンドへのフォールバックはしないでください。プレビュー版は、ユーザーがプレビュー検証を求めた場合を除き、要件を満たしません。

開発者モード(事前に確認)

開発者モードには管理者権限への昇格が必要です。UAC を起動する前にユーザーに確認してください。 同意があった場合に限り、この操作だけを昇格して実行します。

Start-Process powershell -Verb RunAs -ArgumentList @(
    '-NoProfile','-Command',
    "New-Item -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock' -Force | Out-Null; " +
    "Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock' " +
    "-Name AllowDevelopmentWithoutDevLicense -Type DWord -Value 1"
) -Wait

ユーザーが辞退するか UAC を閉じた場合は、概要の表示に進み、後で使用するコマンドを表示します。

要求されたワークフローの追加要件
ワークフロー追加要件
Native AOT の発行/実行Windows のネイティブコンパイラー/リンカーツールチェーン:C++ によるデスクトップ開発を含む Visual Studio または Build Tools。対象アーキテクチャのツールと Windows SDK も必要です。Native AOT の前提条件を参照してください。通常の JIT による反復開発では不要です。
Windows Sandbox でのアプリ実行と UI 自動化(利用可能な場合に推奨)WinApp の統合には、Windows 11 24H2 以降、ハードウェア仮想化、および動作する Windows Sandbox 機能/クライアントが必要です。対応エディションは Pro、Enterprise、Education です。Home は対象外です。入力/キャプチャには、ロック解除されたホストと、接続済みで最小化されていないクライアントが必要です。WinApp Sandbox の前提条件を参照してください。

これらは基本のツールチェーンとは分けて報告してください。winapp target snapshot sandbox --json は、既存のゲストを起動も修復もせずに検査します。「実行中のターゲットがありません」という状態だけでは、Windows の機能が利用できないことを意味しません。Windows Sandbox が利用できない場合の対応は、winui-ui-testing Step 1 で定義されています。

Windows Sandbox の有効化はユーザーの操作です(管理者権限と再起動が必要です)。ユーザーにWindows の機能の有効化または無効化を開いてWindows Sandboxを選択し、再起動を求められた場合は再起動するよう依頼してください。ハードウェア仮想化を有効にする必要があります。VM では、ネストされた仮想化も必要になる場合があります。Microsoft の対応エディションとインストール手順を参照してください。

最終サマリー

サマリーは必ず 1 つだけ出力してください。

==== winui-setup summary ====
.NET SDK >= 8.0.100     [>] already present (10.0.100)
WinApp CLI >= 0.7.0     [OK] upgraded to 0.7.0
Developer Mode          [OK] enabled

要件を満たしたワークフローについてのみ、準備が整ったことを報告してください。現在のハーネスでwinui-devオーケストレーターエージェントを利用できる場合は、そのエージェントで新しいセッションを開始し、WinUI アプリをビルドするよう依頼してください。利用できない場合は、現在のハーネスで新しいセッションを開始し、WinUI タスクを実行するよう依頼してください。関連するwinui-*スキルは必要に応じて読み込まれます。

GitHub Copilot CLI の場合、たとえば次のようにします。

copilot --agent winui:winui-dev -p "build me a WinUI 3 markdown editor"
行ってはいけないこと
  • Visual Studio をインストールしないでください。インストールは任意です。Native AOT に必要なのは MSVC C++ ビルドツールのみで、別途、明示的な承認を得てセットアップします。
  • ユーザーの AI コーディングハーネスをインストールまたはアップグレードしないでください。このスキルが管理するのは、Windows/WinUI 開発の前提条件のみです。
  • セッション全体を昇格させないでください。承認された個別のセットアップ操作に限り、昇格を求めてください。
  • 失敗したインストールを黙って再試行しないでください。

コメント