MSIX として CLI 実行可能ファイルをパッケージ化する

このガイドでは、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: NamePublisher、および 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

ヒント

  1. 配布の準備ができたら、証明機関のコード署名証明書を使用して MSIX に署名できるため、ユーザーは自己署名証明書をインストールする必要がありません
  2. Microsoft Storeは MSIX に署名します。送信前に署名する必要はありません。
  3. サポートするアーキテクチャごとに 1 つずつ、複数の MSIX パッケージを作成する必要がある場合があります (x64、Arm64)

次のステップ

  • winget 経由で配信: MSIX を Windows パッケージ マネージャー Community Repository に送信します
  • Microsoft Store に発行する: を使用してパッケージを送信する
  • CI/CD の設定: setup-WinAppCli GitHub Action を使用して、パイプライン内のパッケージングを自動化します