Important
Windows App開発 CLI は現在、一般プレビュー段階です。 機能とコマンドは、最終リリースの前に変更される可能性があります。
このページでは、 winapp CLI で使用可能なすべてのコマンドについて説明します。
グローバル オプション
すべてのコマンドで、次のグローバル オプションがサポートされます。
| Option | 説明 |
|---|---|
--verbose、-v |
ログの詳細出力を有効にする |
--quiet、-q |
進行状況メッセージを抑制する |
--help、-h |
コマンド ヘルプを表示する |
グローバル キャッシュ ディレクトリ
WinApp は、複数のプロジェクト間で共有できるファイルをキャッシュするディレクトリを作成します。 既定では、これは $UserProfile/.winapp です。
別の場所を使用するには、 WINAPP_CLI_CACHE_DIRECTORY 環境変数を設定します。
$env:WINAPP_CLI_CACHE_DIRECTORY = "d:\temp\.winapp"
セットアップ コマンド
初期化
Windows SDK、Windows App SDK、および最新の Windows 開発に必要な資産を使用してディレクトリを初期化します。
winapp init [base-directory] [options]
引数:
| 引数 | 説明 |
|---|---|
base-directory |
アプリ/ワークスペースのベース/ルート ディレクトリ (既定値: 現在のディレクトリ) |
オプション:
| Option | 説明 |
|---|---|
--config-dir <path> |
読み取り/保存するディレクトリの構成 (既定: 現在のディレクトリ) |
--setup-sdks |
SDK インストール モード: stable (既定)、 preview、 experimental、または none |
--ignore-config、--no-config |
バージョン管理に構成ファイルを使用しない |
--no-gitignore |
.gitignore ファイルを更新しない |
--use-defaults、--no-prompt |
プロンプトを表示せず、すべてのプロンプトの既定値を使用する |
--config-only |
構成ファイル操作のみを処理し、パッケージのインストールをスキップする |
実行内容:
- 構成ファイル
winapp.yaml作成します - Windows SDK とWindows App SDK パッケージをダウンロードする
- C++/WinRT ヘッダーとバイナリを生成します
- AppxManifest.xml を作成します
- ビルド ツールを設定し、開発者モードを有効にする
- 生成されたファイルを除外するように .gitignore を更新します
自動.NETプロジェクト検出:
ターゲット ディレクトリに .csproj ファイルが見つかった場合、init は合理化された.NET固有のフローを使用します。
-
TargetFrameworkを検証し、Windows と互換性のある TFM に更新します (たとえば、net10.0-windows10.0.26100.0) -
Microsoft.WindowsAppSDKとMicrosoft.Windows.SDK.BuildToolsを NuGetPackageReferenceエントリとして直接追加します。.csproj -
appxmanifest.xml、資産、開発証明書を生成します -
を作成したり、C++ プロジェクションをダウンロード
winapp.yaml(NuGet パッケージにdotnet restoreを使用)
例:
# Initialize current directory
winapp init
# Initialize with experimental packages
winapp init --setup-sdks experimental
# Initialize specific directory without prompts
winapp init ./my-project --use-defaults
# Initialize a .NET project (auto-detected from .csproj)
cd my-dotnet-app
winapp init
ヒント
initで--setup-sdks noneを実行し、後で SDK が必要な場合は、winapp init --use-defaults --setup-sdks stableを再実行します。 これにより、既存のファイル (マニフェストなど) が保持されます。
復元
パッケージを復元し、既存の winapp.yaml 構成に基づいてファイルを再生成します。
winapp restore [options]
オプション:
| Option | 説明 |
|---|---|
--config-dir <path> |
winapp.yaml を含むディレクトリ (既定値: 現在のディレクトリ) |
実行内容:
- 既存の
winapp.yaml構成を読み取ります - SDK パッケージを指定されたバージョンにダウンロード/更新する
- C++/WinRT ヘッダーとバイナリを再生成します
注
winapp init で初期化.NETプロジェクトの場合、winapp.yamlはありません。 代わりに、 dotnet restore を使用して NuGet パッケージを復元します。
例:
# Restore from winapp.yaml in current directory
winapp restore
アップデート
パッケージを最新バージョンに更新し、構成ファイルを更新します。
winapp update [options]
オプション:
| Option | 説明 |
|---|---|
--config-dir <path> |
winapp.yaml を含むディレクトリ (既定値: 現在のディレクトリ) |
--setup-sdks |
SDK インストール モード: stable (既定)、 preview、 experimental、または none |
実行内容:
- 既存の
winapp.yaml構成を読み取ります - すべてのパッケージを利用可能な最新バージョンに更新します
-
winapp.yamlファイルを新しいバージョン番号で更新します - C++/WinRT ヘッダーとバイナリを再生成します
例:
# Update packages to latest versions
winapp update
# Update including experimental packages
winapp update --setup-sdks experimental
パッケージ化コマンド
パック
準備されたアプリケーション ディレクトリから MSIX パッケージを作成します。 appxmanifest.xml ファイルは、ターゲット ディレクトリや現在のディレクトリに存在するか、--manifest オプションで渡す必要があります。
winapp pack <input-folder> [options]
引数:
| 引数 | 説明 |
|---|---|
input-folder |
パッケージ化するアプリケーション ファイルを含むディレクトリ |
オプション:
| Option | 説明 |
|---|---|
--output <filename> |
出力 MSIX ファイル名 (既定値: <name>.msix) |
--name <name> |
パッケージ名 (既定値: マニフェストから) |
--manifest <path> |
AppxManifest.xml へのパス (既定値: 自動検出) |
--cert <path> |
署名証明書へのパス (自動署名を有効にする) |
--cert-password <password> |
証明書パスワード (既定値: "password") |
--generate-cert |
新しい開発証明書を生成する |
--install-cert |
コンピューターに証明書をインストールする |
--publisher <name> |
証明書生成のPublisher名 |
--self-contained |
Windows App SDK ランタイムのバンドル |
--skip-pri |
PRI ファイルの生成をスキップする |
--executable <path> |
入力フォルダーを基準とする実行可能ファイルへのパス。 マニフェスト内 $targetnametoken$ プレースホルダーを解決するために使用されます。 |
実行内容:
- AppxManifest.xml ファイルを検証し処理します
- マニフェスト
$placeholder$トークンを解決します ( マニフェスト プレースホルダーを参照) - 適切なフレームワークの依存関係を確保する
- 登録を使用してサイド バイ サイド マニフェストを更新する
- 自己完結型のWindows App SDK展開を処理する
- 証明書が指定された場合にパッケージに署名する
例:
# Package directory with auto-detected manifest
winapp pack ./dist
# Package with custom output name and certificate
winapp pack ./dist --output MyApp.msix --cert ./cert.pfx
# Package with generated and installed certificate and self-contained runtime
winapp pack ./dist --generate-cert --install-cert --self-contained
# Package with explicit executable
winapp pack ./dist --executable MyApp.exe
デバッグ・アイデンティティを作成
外部の場所/スパース パッケージを使用して、完全な MSIX パッケージを使用せずにデバッグ用のアプリ ID を作成します。
winapp create-debug-identity [entrypoint] [options]
引数:
| 引数 | 説明 |
|---|---|
entrypoint |
ID を必要とする実行可能ファイル (.exe) またはスクリプトへのパス |
オプション:
| Option | 説明 |
|---|---|
--manifest <path> |
AppxManifest.xml へのパス (既定値: ./appxmanifest.xml) |
--no-install |
作成後にパッケージをインストールしない |
--keep-identity |
パッケージ名とアプリケーション ID に .debug を追加せずに、マニフェスト ID を as-isしたままにする |
実行内容:
- 実行可能ファイルのサイド バイ サイド マニフェストを変更します
- 識別情報のスパース パッケージを登録します
- ID が必要な API のデバッグを有効にします
例:
# Add identity to executable using local manifest
winapp create-debug-identity ./bin/MyApp.exe
# Add identity with custom manifest location
winapp create-debug-identity ./dist/app.exe --manifest ./custom-manifest.xml
マニフェスト コマンド
マニフェスト生成
テンプレートから AppxManifest.xml を生成します。
winapp manifest generate [directory] [options]
引数:
| 引数 | 説明 |
|---|---|
directory |
マニフェストを生成するディレクトリ (既定値: 現在のディレクトリ) |
オプション:
| Option | 説明 |
|---|---|
--package-name <name> |
パッケージ名 (既定値: フォルダー名) |
--publisher-name <name> |
PUBLISHER CN (既定値: CN=<current user>) |
--version <version> |
バージョン (既定値: "1.0.0.0") |
--description <text> |
説明 (既定値: "マイ アプリケーション") |
--entrypoint <path> |
エントリ ポイントの実行可能ファイルまたはスクリプト |
--template <type> |
テンプレートの種類: packaged (既定) または sparse |
--logo-path <path> |
ロゴイメージファイルへのパス |
--if-exists <Error\|Overwrite\|Skip> |
ファイルが既に存在する場合の動作 (既定値: エラー) |
テンプレート:
-
packaged- 標準パッケージ アプリ マニフェスト -
sparse- 簡易化/外部配置パッケージングを使用したアプリ マニフェスト
マニフェスト プレースホルダー
生成されたマニフェストでは、パッケージ化時に自動的に解決される $placeholder$ トークン (ドル記号で区切られた) が使用されます。
| プレースホルダー | 解決済み | 例 |
|---|---|---|
$targetnametoken$ |
拡張子のない実行可能ファイル名 |
Executable="$targetnametoken$.exe" は Executable="MyApp.exe" になります |
$targetentrypoint$ |
Windows.FullTrustApplication |
常に自動的に解決される |
プレースホルダーの解決方法:
-
winapp packは、$targetnametoken$オプションを使用するか、入力フォルダー内の単一の--executableを自動検出することによって、.exeを解決します。 -
winapp create-debug-identity指定すると、エントリポイント引数から$targetnametoken$が解決されます。 -
winapp manifest generate --executableは実行可能ファイルからメタデータを抽出しますが、後で解決するためにマニフェストに$targetnametoken$.exeを保持します。
ヒント
$targetnametoken$をチェックイン マニフェストに保持すると、実行可能ファイル名のハード コーディングが回避され、winapp pack ビルドとVisual Studio ビルドの両方で動作します。
例:
# Generate standard manifest interactively
winapp manifest generate
# Generate with all options specified
winapp manifest generate ./src --package-name MyApp --publisher-name "CN=My Company" --if-exists overwrite
マニフェストのアセット更新
1 つのソース イメージから必要なすべての MSIX イメージ資産を生成します。
winapp manifest update-assets <image-path> [options]
引数:
| 引数 | 説明 |
|---|---|
image-path |
ソース イメージ ファイルへのパス (PNG、JPG、GIF など) |
オプション:
| Option | 説明 |
|---|---|
--manifest <path> |
AppxManifest.xml ファイルへのパス (既定値: 現在のディレクトリを検索) |
1 つのソース イメージを取得し、必要な 12 個の MSIX イメージ 資産をすべて正しいサイズで自動的に生成します。 アセットは、マニフェストの場所を基準にして Assets ディレクトリに保存されます。
例:
# Generate assets with auto-detected manifest
winapp manifest update-assets mylogo.png
# Specify manifest location explicitly
winapp manifest update-assets mylogo.png --manifest ./dist/appxmanifest.xml
証明書と署名コマンド
証明書の生成
パッケージ署名用の開発証明書を生成します。
winapp cert generate [options]
オプション:
| Option | 説明 |
|---|---|
--manifest <appxmanifest.xml> |
appxmanifest.xmlからpublisher情報を抽出する |
--publisher <name> |
証明書のPublisher名 |
--output <path> |
出力証明書ファイルのパス |
--password <password> |
証明書パスワード (既定値: "password") |
--valid-days <days> |
証明書が有効な日数 (既定値: 365) |
--install |
生成後にローカル コンピューター ストアに証明書をインストールする |
--if-exists <Error\|Overwrite\|Skip> |
証明書ファイルが既に存在する場合の動作 (既定値: エラー) |
証明書のインストール
コンピューター証明書ストアに証明書をインストールします。
winapp cert install <cert-path>
引数:
| 引数 | 説明 |
|---|---|
cert-path |
インストールする証明書ファイルへのパス |
例:
# Generate certificate for specific publisher
winapp cert generate --publisher "CN=My Company" --output ./mycert.pfx
# Install certificate to machine
winapp cert install ./mycert.pfx
標識
証明書を使用して MSIX パッケージと実行可能ファイルに署名します。
winapp sign <file-path> [options]
引数:
| 引数 | 説明 |
|---|---|
file-path |
署名する MSIX パッケージまたは実行可能ファイルへのパス |
オプション:
| Option | 説明 |
|---|---|
--cert <path> |
署名証明書へのパス |
--cert-password <password> |
証明書パスワード (既定値: "password") |
例:
# Sign MSIX package
winapp sign MyApp.msix --cert ./mycert.pfx
# Sign executable
winapp sign ./bin/MyApp.exe --cert ./mycert.pfx --cert-password mypassword
ユーティリティ コマンド
ツール
Windows SDK ツールを直接Accessします。 Microsoft.Windows.SDK.BuildTools で使用できるツールを使用します。
winapp tool <tool-name> [tool-arguments]
使用可能なツール:
-
makeappx- アプリ パッケージの作成と操作 -
signtool- ファイルに署名して署名を確認する -
mt- サイド バイ サイド アセンブリのマニフェスト ツール - Microsoft.Windows.SDK.BuildTools のその他の Windows SDK ツール
例:
# Use signtool to verify signature
winapp tool signtool verify /pa MyApp.msix
保存する
Microsoft Store Developer CLI コマンドを実行します。 このコマンドを実行すると、Microsoft Store Developer CLI がまだダウンロードされていない場合にダウンロードされます。 詳細については、 Microsoft Store Developer CLI を参照してください。
winapp store [args...]
引数:
| 引数 | 説明 |
|---|---|
args... |
msstore CLI に直接渡す引数 |
例:
# List all apps in your Microsoft Partner Center account
winapp store app list
# Publish a package to the Microsoft Store
winapp store publish ./myapp.msix --appId <your-app-id>
get-winapp-path
インストールされている Windows SDK コンポーネントへのパスを取得します。
winapp get-winapp-path [options]
.winapp ワークスペース ディレクトリ、パッケージ インストール ディレクトリ、および生成されたヘッダーの場所へのパスを返します。
Node.js/Electron コマンド
これらのコマンドは NPM パッケージでのみ使用できます。
node create-addon(ノード クリエイト・アドオン)
Windows SDK とWindows App SDK統合を使用して、ネイティブの C++ または C# アドオン テンプレートを生成します。
npx winapp node create-addon [options]
オプション:
| Option | 説明 |
|---|---|
--name <name> |
アドオン名 (既定値: "nativeWindowsAddon") |
--template |
アドオンの種類の選択: cs または cpp (既定値: cpp) |
--verbose |
詳細出力を有効にする |
実行内容:
- テンプレート ファイルを使用してアドオン ディレクトリを作成します
- Windows SDK の例を使用して binding.gyp ファイルとアドオン ファイルを生成します
- 必要な npm 依存関係をインストールします
- ビルド スクリプトを package.json に追加します
例:
# Generate addon with default name
npx winapp node create-addon
# Generate custom named C# addon
npx winapp node create-addon --name myWindowsAddon --template cs
node add-electron-debug-identity
スパース パッケージを使用して、Electron 開発プロセスにアプリ ID を追加します。 appxmanifest.xml が必要です ( winapp init または winapp manifest generateを使用して作成します)。
Important
スパース パッケージの Electron アプリケーションには、起動時にアプリがクラッシュする、または Web コンテンツをレンダリングしないという既知の問題があります。 この問題は Windows で修正されましたが、まだすべてのデバイスに反映されていません。 回避策として、 フラグを使用--no-sandbox化を無効にすることができます。 この問題は、MSIX パッケージ全体には影響しません。
Electron デバッグ ID を元に戻すには、 winapp node clear-electron-debug-identityを使用します。
npx winapp node add-electron-debug-identity [options]
オプション:
| Option | 説明 |
|---|---|
--manifest <path> |
カスタム appxmanifest.xml へのパス (既定値: 現在のディレクトリ内の appxmanifest.xml) |
--no-install |
依存関係をインストールまたは変更しないでください。Electron デバッグ ID のみを構成する |
--keep-identity |
マニフェストIDをそのまま保持し、.debugを追加しないでください。 |
--verbose |
詳細出力を有効にする |
例:
# Add identity to Electron development process
npx winapp node add-electron-debug-identity
# Use a custom manifest file
npx winapp node add-electron-debug-identity --manifest ./custom/appxmanifest.xml
node clear-electron-debug-identity
元の electron.exe をバックアップから復元して、Electron デバッグ プロセスからパッケージ ID を削除します。
npx winapp node clear-electron-debug-identity [options]
オプション:
| Option | 説明 |
|---|---|
--verbose |
詳細出力を有効にする |
例:
# Remove identity from Electron development process
npx winapp node clear-electron-debug-identity
関連トピック
Windows developer