次の方法で共有


Windows App 開発 CLI リファレンス

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 (既定)、 previewexperimental、または 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.WindowsAppSDKMicrosoft.Windows.SDK.BuildToolsを NuGet PackageReference エントリとして直接追加します。.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 (既定)、 previewexperimental、または 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> ファイルが既に存在する場合の動作 (既定値: エラー)

テンプレート:

マニフェスト プレースホルダー

生成されたマニフェストでは、パッケージ化時に自動的に解決される $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