このガイドでは、Windows パッケージ マネージャー (winget)、Microsoft Store、または直接配布を介して配布するための MSIX パッケージとして既存のコマンド ライン実行可能ファイルをパッケージ化する手順について説明します。
[前提条件]
- パッケージ化する既存の CLI 実行可能ファイル (
.exe) - Windows 10 バージョン 1809 以降
手順
1. CLI アプリケーションを整理する
CLI 実行可能ファイルと依存関係を専用フォルダーに配置します。 このフォルダーには、MSIX パッケージに含める必要があるすべてのファイルが含まれます。
mkdir MyCliPackage
cd MyCliPackage
# Copy your CLI executable and dependencies here
2. winapp CLI をインストールする
Windows パッケージ マネージャーを使用して winapp CLI をインストールするか、既にインストールしている場合は最新バージョンに更新します。
# Install (or update if already installed)
winget install microsoft.winappcli --source winget
3. Package.appxmanifest を生成する
CLI 実行ファイルのためのベース Package.appxmanifest と必要なアセットを生成します。
winapp manifest generate --executable .\yourcli.exe
このコマンドは、実行可能ファイルから既定値が設定された Package.appxmanifest ファイルを現在のディレクトリに作成します。
4. マニフェストを構成する
生成された Package.appxmanifest を編集して、パッケージをカスタマイズします。 以下の各サブ手順では、変更する内容とその理由について説明します。
4.1 必要な名前空間を追加する
uap5名前空間がまだ存在しない場合は、Package要素に追加します。 これは、手順 4.3 の実行エイリアスに必要です。
<Package
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10"
...
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10"
xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
xmlns:rescap="http://schemas.microsoft.com/appx/manifest/foundation/windows10/restrictedcapabilities"
IgnorableNamespaces="uap uap5 rescap">
4.2 Application 要素を構成する
<uap:VisualElements>要素で、アプリを [スタート] メニューから非表示にするAppListEntry="none"を追加します。 CLI ツールはターミナルから呼び出されるため、スタート メニュー エントリは必要ありません。
<uap:VisualElements
DisplayName="YourApp"
Description="My Application"
BackgroundColor="transparent"
Square150x150Logo="Assets\Square150x150Logo.png"
Square44x44Logo="Assets\Square44x44Logo.png"
AppListEntry="none">
</uap:VisualElements>
4.3 実行エイリアス拡張機能を追加する
ユーザーが任意のターミナル ウィンドウから名前で CLI を実行できるように、実行エイリアスを追加します。 これを <Application> 要素内に追加します ( <uap:VisualElements>の後)。
<Extensions>
<uap5:Extension Category="windows.appExecutionAlias">
<uap5:AppExecutionAlias>
<uap5:ExecutionAlias Alias="yourcli.exe" />
</uap5:AppExecutionAlias>
</uap5:Extension>
</Extensions>
yourcli.exeを CLI の目的のコマンド名に置き換えます。 ユーザーが MSIX をインストールすると、このコマンドを使用して CLI を呼び出すことができます。
4.4 アプリケーションメタデータの更新
CLI アプリケーションと一致するように次のフィールドを更新します。
Important
マニフェストの Publisher 値は、署名証明書のpublisherと一致している必要があります。 後で証明書を生成する場合 (手順 5) は、マニフェストの発行元を使用します。 証明書の生成後に発行元を変更する場合は、一致するように証明書を再生成する必要があります。
Identity:
Name、Publisher、およびVersionを更新します<Identity Name="YourCompany.YourCLI" Publisher="CN=Your Company" Version="1.0.0.0" />プロパティ: 表示名、発行元の表示名、および説明を更新する
<Properties> <DisplayName>Your CLI Tool</DisplayName> <PublisherDisplayName>Your Company</PublisherDisplayName> <Description>Description of your CLI tool</Description> <Logo>Assets\StoreLogo.png</Logo> </Properties>VisualElements: 表示名と資産参照を更新する
<uap:VisualElements DisplayName="Your CLI Tool" Description="Description of your CLI tool" BackgroundColor="transparent" Square150x150Logo="Assets\Square150x150Logo.png" Square44x44Logo="Assets\Square44x44Logo.png"> <uap:DefaultTile Wide310x150Logo="Assets\Wide310x150Logo.png" /> <uap:SplashScreen Image="Assets\SplashScreen.png" /> </uap:VisualElements>
注: また、パッケージ ディレクトリ内の Assets フォルダーに適切なアイコン アセットを追加する必要があります。 アプリは [スタート] メニューには表示されませんが、ストアの申請にはアイコンが引き続き必要であり、他のコンテキストで表示される場合があります。
5. (省略可能) 開発証明書の生成
Microsoft Storeの外部でローカルテストと配布を行うには、証明書を使用して MSIX パッケージに署名する必要があります。
開発証明書を生成します。 パッケージに誤って含めないように、CLI フォルダーの外側に置きます。
# Navigate to a location outside your CLI folder (e.g., your home directory)
cd ~
winapp cert generate
これにより、ホーム ディレクトリに devcert.pfx ファイルが作成されます (例: C:\Users\yourname\devcert.pfx)。
開発用コンピューターでこの証明書を信頼するには、その証明書をインストールします (管理者特権が必要です)。
# Run PowerShell as Administrator
winapp cert install ~\devcert.pfx
6. CLI をパッケージ化する
これで、MSIX パッケージを作成する準備ができました。
# Navigate back outside of your project folder
# Package with dev certificate (for local testing/distribution)
winapp pack .\path\to\MyCliPackage --cert .\path\to\devcert.pfx
これにより、現在のディレクトリに .msix ファイルが作成されます。
7. インストールと確認
MSIX パッケージをインストールして、すべてが機能することを確認します。
Add-AppxPackage .\MyCliPackage.msix
手順 4.3 で実行エイリアスを追加した場合は、任意のターミナルから CLI を実行できるようになりました。
yourcli --help
後でアンインストールするには:
Get-AppxPackage *YourCLI* | Remove-AppxPackage
ヒント
- 配布の準備ができたら、証明機関のコード署名証明書を使用して MSIX に署名できるため、ユーザーは自己署名証明書をインストールする必要がありません
- Microsoft Storeは MSIX に署名します。送信前に署名する必要はありません。
- サポートするアーキテクチャごとに 1 つずつ、複数の MSIX パッケージを作成する必要がある場合があります (x64、Arm64)
次のステップ
winget 経由で配信 : MSIX をWindows パッケージ マネージャー Community Repository に送信しますMicrosoft Store に発行する :を使用してパッケージを送信する -
CI/CD の設定:
setup-WinAppCliGitHub Action を使用して、パイプライン内のパッケージングを自動化します
Windows developer