単一プロジェクト MSIX を使用してアプリをパッケージ化する

単一プロジェクト MSIX は、パッケージ化された WinUI 3 デスクトップ アプリ (Windows アプリ SDKを使用して、 別のパッケージ化プロジェクトを必要とせずにビルドできる機能です。 この機能は、次のシナリオで使用できる Visual Studio 拡張機能として使用できます。

  • Windows アプリ SDKに付属する空のアプリ、パッケージ (デスクトップの WinUI 3) Visual Studio プロジェクト テンプレートを使用して、新しい WinUI 3 デスクトップ アプリを作成します。 そのプロジェクトは、別のパッケージ プロジェクトを必要とせずに MSIX パッケージにアプリをビルドするように構成されています。
  • 別のパッケージ化プロジェクトを使用する 既存 の WinUI 3 デスクトップ アプリを変更します。 この変更には、次の図に示すように、個別のパッケージ化プロジェクトを削除する必要があります。

パッケージ プロジェクトと単一プロジェクトの比較

概要

このセクションでは、単一プロジェクト MSIX 機能に関する重要な詳細について説明します。

メリット

単一プロジェクトの MSIX 機能を導入する前に、パッケージ化された WinUI 3 デスクトップ アプリをビルドする場合は、ソリューションにアプリ プロジェクトと別の Windows アプリケーション パッケージ プロジェクトという 2 つのプロジェクトが必要でした。 単一プロジェクトの MSIX 機能を使用すると、アプリ プロジェクトのみを使用してアプリを開発およびビルドできます。 これは、よりクリーンなプロジェクト構造とより簡単な開発エクスペリエンスを提供します。 たとえば、スタートアップ プロジェクトとして別のパッケージ プロジェクトを選択する必要がなくなりました。

サポートされているプロジェクトの種類

単一プロジェクトの MSIX 機能では、Windows アプリ SDKの Visual Studio (C# および C++) で WinUI 3 テンプレートがサポートされています。

制限事項

単一プロジェクトの MSIX では、生成された MSIX パッケージ内の 1 つの実行可能ファイルのみがサポートされます。 複数の実行可能ファイルを 1 つの MSIX パッケージに結合する必要がある場合は、ソリューションで Windows アプリケーション パッケージ プロジェクトを引き続き使用する必要があります。

単一プロジェクトの MSIX パッケージ作成ツールをインストールする

単一プロジェクトの MSIX パッケージ化ツールには、新しいパッケージ化された WinUI 3 デスクトップ アプリを作成するために使用できる Visual Studio プロジェクト テンプレートが含まれています。 これらのツールは、Visual Studio のWindows アプリ SDK拡張機能に含まれています。 Windows アプリ SDKのインストール手順については、「Windows アプリ SDKのツールをインストールする」を参照してください。

Windows アプリ SDK 0.8 および C# バージョンの 1.0 Preview 3: 単一プロジェクトの MSIX パッケージ化ツールは、Windows アプリ SDK バージョン 0.8 用の Visual Studio 用のWindows アプリ SDK拡張機能や、Windows アプリ SDK 1.0 のプレビュー 3 までの C# プロジェクトには含まれません。 そのため、これらのバージョンを使用している場合は、単一プロジェクトの MSIX パッケージ ツールを明示的にインストールする必要 がある場合があります 。 以下の情報を参照してください。

その後、Visual Studio で拡張機能がインストールされていることを確認できます。 [拡張機能>] [拡張機能>の管理] [すべてインストール済み] の順に>クリックし、単一プロジェクトの MSIX Packaging Tools が一覧表示されていることを確認します。

新しいプロジェクトを作成する

Windows アプリ SDK 1.0 Preview 2 以降を使用している場合は、空のアプリ、パッケージ (デスクトップの WinUI 3) テンプレートを使用するだけで、単一プロジェクトの MSIX サポートを含む新しい WinUI 3 ベースのアプリを作成できます。 詳細については、「 初めての WinUI 3 プロジェクトを作成する」を参照してください。

既存のプロジェクトを変更する

別のパッケージ プロジェクトを使用する既存の WinUI 3 ベースのアプリを変更するには、このセクションの手順に従います。 この手順には、パッケージ マニフェスト (および MSIX パッケージをビルドするために必要なその他のサポート) をアプリケーション プロジェクトに移動してから、別のパッケージ プロジェクトを削除する方法が含まれます。

手順 1: 既存のパッケージ プロジェクトを作成するか開く

別の Windows アプリケーション パッケージ プロジェクトを含む WinUI 3 デスクトップ アプリ (「Visual Studio の WinUI 3 テンプレート」を参照) のソリューションが既にある場合は、そのソリューションを Visual Studio で今すぐ開きます。

そうでない場合は、 空のアプリである Windows アプリケーション パッケージ プロジェクト (デスクトップの WinUI 3) テンプレートを使用して、Visual Studio で新しい WinUI 3 デスクトップ アプリを作成します。 ソリューションは次のスクリーンショットのようになります。

パッケージ化プロジェクトを使用したソリューション

手順 2: アプリケーション プロジェクト設定を編集する

次に、一部の構成設定を編集して、単一プロジェクト MSIX 機能を使用します。 プロジェクトの種類と Visual Studio バージョンに応じて異なる手順があります。

  1. ソリューション エクスプローラーで、アプリケーションのプロジェクト ノードをダブルクリックして、XML エディターで .csproj ファイルを開きます。 メインの <PropertyGroup> 要素に次の XML を追加します。

    <EnableMsixTooling>true</EnableMsixTooling>
    <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
    

    完了すると、 <PropertyGroup> 要素は次のようになります。

    <Project Sdk="Microsoft.NET.Sdk">
      <PropertyGroup>
        <OutputType>WinExe</OutputType>
        <TargetFramework>net6.0-windows10.0.19041.0</TargetFramework>
        ...
        <UseWinUI>true</UseWinUI>
        <EnableMsixTooling>true</EnableMsixTooling>
        <PublishProfile>Properties\PublishProfiles\win10-$(Platform).pubxml</PublishProfile>
      </PropertyGroup>
    
  2. 変更を保存し、 .csproj ファイルを閉じます。

  3. Visual Studio のバージョンに応じて、次のいずれかの手順を実行します。

    Visual Studio 2022 以降の場合:

    1. ソリューション エクスプローラーで、アプリケーションのプロジェクト ノードの下にある [プロパティ] フォルダーを右クリックし、[新しい項目追加>] を選択します。

    2. [ テキスト ファイル] を選択し、新しいファイル に launchSettings.json という名前を 付けて、[追加] をクリックします。 新しいファイルがアプリケーション プロジェクトの Properties フォルダーにあることを確認します。

    3. 次の設定を新しいファイルにコピーします。 シナリオに応じて、必要に応じて値を自由に変更できます。 MyApp 値には任意の文字列を指定できます。アプリケーションの名前と一致する必要はありません。

      {
          "profiles": {
              "MyApp": {
                  "commandName": "MsixPackage",
                  "commandLineArgs": "", /* Command line arguments to pass to the app. */
                  "alwaysReinstallApp": false, /* Uninstall and then reinstall the app. All information about the app state is deleted. */
                  "remoteDebugEnabled": false, /* Indicates that the debugger should attach to a process on a remote machine. */
                  "allowLocalNetworkLoopbackProperty": true, /* Allow the app to make network calls to the device it is installed on. */
                  "authenticationMode": "Windows", /* The authentication scheme to use when connecting to the remote machine. */
                  "doNotLaunchApp": false, /* Do not launch the app, but debug my code when it starts. */
                  "remoteDebugMachine": "", /* The name of the remote machine. */
                  "nativeDebugging": false /* Enable debugging for managed and native code together, also known as mixed-mode debugging. */
              }
          }
      }
      
    4. launchSettings.json ファイルを保存して閉じます。

    Visual Studio 2019 の場合:

    1. ソリューション エクスプローラーで、アプリケーションのプロジェクト ノードを右クリックし、[ プロパティ] を選択します

    2. [デバッグ] タブを選択し、Launch プロパティを MsixPackage に設定します。 最初の試行時に戻された場合は、これを 2 回選択する必要があります。

      MsixProject オプションの有効化

    3. 変更を保存します。

手順 3: アプリケーション プロジェクトにファイルを移動する

次に、いくつかの重要なファイルをアプリケーション プロジェクトに移動します。 プロジェクトの種類によって異なる手順があります。

  1. ファイル エクスプローラーで、Package.appxmanifest ファイルと Images フォルダーを、パッケージ プロジェクトからアプリケーション プロジェクトに移動します。 このファイルとフォルダーを、アプリケーション プロジェクトのフォルダー階層の最上位に配置します。
  2. Visual Studio のソリューション エクスプローラーで、Images フォルダー内のすべてのイメージを複数選択します。 [ プロパティ ] ウィンドウで、[ ビルド アクション][コンテンツ] に設定します。
  3. パッケージ プロジェクトをソリューションから削除します。

メイン アプリへのファイルの移動の図

手順 4: Configuration Manager での配置を有効にする

  1. [ビルド]>[構成マネージャー] を選択します。
  2. 構成マネージャーで、構成とプラットフォームの組み合わせごとに [配置] チェック ボックスをクリックします (たとえば、 [デバッグ][x86][デバッグ][arm64][リリース][x64] など)。

    Note

    [配置] チェックボックスと同じ行にある [構成][プラットフォーム] のドロップダウンではなく、上部にある [アクティブ ソリューション構成][アクティブ ソリューション プラットフォーム] のドロップダウンを必ず使用してください。

構成マネージャーで [配置] を有効にする

手順 5: アプリを配置する

アプリケーション プロジェクトをビルドして配置します。 Visual Studio は、アプリケーションを MSIX パッケージにビルドし、パッケージをインストールして、アプリケーションを実行します。

手順 6: アプリを公開用にパッケージ化する

Visual Studio の [パッケージ&発行] コマンドを使用してアプリケーションをパッケージ化し、Microsoft ストアに発行します。

単一プロジェクト MSIX アプリのビルドとパッケージ化を自動化する

msbuild を使用して、単一プロジェクト MSIX アプリをビルドしてパッケージ化できます。その結果、ワークフローを自動化できます。 単一プロジェクト ソリューションの手法 (およびコマンドライン) は、2 プロジェクト ソリューション (Windows アプリケーション パッケージ プロジェクトを持つソリューション) がある場合に既に行っている可能性のある手法とは少しだけ異なります。

単一プロジェクト ソリューションの重要なビルド コマンド オプションは /p:GenerateAppxPackageOnBuild=true です。 このオプションを指定しない場合、プロジェクトはビルドされますが、MSIX パッケージは取得されません。 このオプションを含めます。これにより、MSIX パッケージが生成されます。

WinUI 3 単一プロジェクト ソリューションをビルドする GitHub アクションの形式の完全な例があります。

注意

単一プロジェクト MSIX では現在、MSIX バンドルの生成をサポートしていません (「MSIX パッケージのバンドル」を参照)。 単一の MSIX だけを生成します。 ただし、MSIX Bundler GitHub アクションを使用することで、.msix ファイルを MSIX バンドルにバンドルできます。

Windows でパッケージ化されたデスクトップ アプリを実行する方法

デスクトップ アプリケーションの Windows アプリ パッケージを作成したときのファイルとレジストリ エントリの動作の詳細については、「Windows でパッケージ化されたデスクトップ アプリが動作するしくみについて」を参照してください。

フィードバックの提供

単一プロジェクト MSIX 機能について、フィードバックを送信したり、問題を報告したり、質問したりするには、Windows App SDK GitHub リポジトリでディスカッションまたは問題を投稿してください。