オプション パッケージと関連セットの作成

オプション パッケージには、メイン パッケージに統合できるコンテンツが格納されます。 オプション パッケージは、ダウンロード可能なコンテンツ (DLC) 用や、サイズ制約に対応して大規模アプリを分割する場合、元のアプリから分離して追加コンテンツを出荷する場合に便利です。 オプション パッケージの詳細については、ブログ記事「オプション パッケージを使用して アプリケーションを拡張する」を参照してください

関連セットは、オプション のパッケージの拡張機能です。 関連セットを使用すると、メイン パッケージとオプション パッケージ間で厳密なバージョン セットを適用できます。 関連セットは、ストアの外部にデプロイされている場合、メイン アプリとは異なる発行元を持つ場合があります。 関連セットの詳細については、ブログ記事「関連セットを作成するツール 」を参照してください

オプションのパッケージと関連セットはすべて、メイン アプリの MSIX コンテナー内で実行されます。

前提条件

  • Visual Studio 2019 または Visual Studio 2017 (バージョン 15.1 以降)
  • Windows 10 Version 1703 以降
  • Windows 10バージョン 1703 SDK 以降

最新の開発ツールをすべて取得する方法については、「Windows 10 用のダウンロードとツール」をご覧ください。

注意

オプションのパッケージや関連セットを使用するアプリを Microsoft Storeアクセス許可が必要です。 オプションのパッケージと関連セットは、ストアに送信されない場合、パートナー センター アクセス許可を持たなくても、Line of Business (LOB) またはエンタープライズ アプリに使用できます。 オプション パッケージや関連セットを使用するアプリの提出許可を得る方法については、「Windows 開発者向けサポート」をご覧ください。

コード サンプル

この記事を読みながら GitHub でオプション パッケージのコード サンプルを参照し、Visual Studio でオプション パッケージと関連セットがどのように動作するかを実際に体験して理解することをお勧めします。

オプション パッケージ

Visual Studio オプション パッケージを作成するには、以下の手順を実行します。

  1. アプリの [ターゲット プラットフォーム最小バージョン ] が 10.0.15063.0 以上に設定されている必要があります。
  2. メイン パッケージ プロジェクトから、Package.appxmanifest ファイルを開きます。 [パッケージ化] タブに移動し、[パッケージ ファミリ名] ("_" 文字の前にある文字列すべて) を書き留めます。
  3. オプション パッケージ プロジェクトから、Package.appxmanifest を右クリックして [プログラムから開く] > [XML (テキスト) エディター] を選択します。
  4. ファイル内の <Dependencies> 要素を見つけます。 次を追加し、 を手順 [MainPackageDependency] 2 の パッケージ ファミリ名 に置き換える。 これにより、オプション パッケージメイン パッケージ に依存することを指定できます。
    <uap3:MainPackageDependency Name="[MainPackageDependency]"/>
    

注意

別の発行元からオプションのパッケージを作成する場合は、メイン アプリケーションの発行元が異なる場合は、その発行元を指定する必要があります。 同様に<uap4:MainPackageDependency Name="Main_app" Publisher="CN=Contoso..." />。 これは、ストアに発行する場合は機能しません。

手順 1 から 4 までパッケージの依存関係を設定した後は、通常と同じ方法で開発を続行できます。 詳細については、ブログ記事「最初のオプション パッケージをビルドする」を参照してください

Visual Studio は、オプション パッケージを展開するたびにメイン パッケージが再展開されるように構成できます。 Visual Studio でビルド依存関係を設定するには、以下の手順を実行する必要があります。

  1. オプション パッケージ プロジェクトを右クリックし、[ビルド依存関係] > [プロジェクト依存関係] を選択します。
  2. メイン パッケージ プロジェクトを確認し、[OK] を選択します。

これで、F5 キーを押すか、オプション パッケージ プロジェクトのビルドを実行するたびに、Visual Studio によってメイン プロジェクトが先にビルドされるようになります。 これにより、メイン プロジェクトとオプション プロジェクトが確実に同期されます。

関連セットは、メイン パッケージと、メイン パッケージの .appxbundle または .msixbundle ファイルで指定されたメタデータを介して密結合されるオプションのパッケージで構成されます。 このメタデータは、メイン パッケージを省略可能なパッケージ (.appxbundle ファイル + バージョンの名前を使用) にリンクし、オプションのパッケージを (バージョンに依存しない名前を使用して) メイン パッケージにリンクします。 Visual Studio を使用すると、正しいメタデータをファイルに取得できます。

関連セット内のパッケージのバージョン管理は、すべての関連セット パッケージ (メイン パッケージのバージョンで指定) がインストールされるまで、パッケージの最新バージョンを使用できない方法で同期されます。 パッケージは個別にサービスが提供されますが、セットで指定されたパッケージは、すべてのパッケージが更新されるまで使用できません。 関連セットの詳細については、ブログ記事「関連セットを作成するツール 」を参照してください

関連セット用にアプリのソリューションを構成するには、次の手順を使用します。

  1. メイン パッケージ プロジェクトを右クリックして、[追加] > [新しいアイテム] を選択します。
  2. そのウィンドウから、[インストールされたテンプレート] で ".txt" を検索し、新しいテキスト ファイルを追加します。

    重要

    新しいテキスト ファイルに Bundle.Mapping.txt という名前を付けます。

  3. ファイルに文字列 "[OptionalProjects]" を入力し、その後にオプションのパッケージ プロジェクトへの相対 Bundle.Mapping.txt パスを入力します。 Bundle.Mapping.txt ファイルの例を次に示します。
    [OptionalProjects]
    "..\ActivatableOptionalPackage1\ActivatableOptionalPackage1.vcxproj"
    "..\ActivatableOptionalPackage2\ActivatableOptionalPackage2.vcxproj"
    

ソリューションをこの方法で構成すると、Visual Studio によって、関連セットに必要なすべてのメタデータを含むメイン パッケージの AppxBundleManifest.xml という名前のバンドル マニフェストが作成されます。

オプションのパッケージと同様に、関連セットのファイルは、Windows 10 Bundle.Mapping.txt バージョン 1703 以上でのみ機能します。 さらに、アプリの [ターゲット プラットフォーム最小バージョン] を 10.0.15063.0 以上に設定する必要があります。

省略可能なパッケージの削除

ユーザーは自分のアプリに 設定 オプションのパッケージを削除できます。 同様に、開発者は RemoveOptionalPackageAsync を使用して、オプションのパッケージの一覧を削除できます。

PackageCatalog catalog = PackageCatalog.OpenForCurrentPackage();
List<string> optionalList = new List<string>();
optionalList.Add("FabrikamAgeAnalysis_kwpnjs8c36mz0");
    
// Warn user that application will be restarted. 
var result = await catalog.RemoveOptionalPackagesAsync(optionalList);
if (result.ExtendedError != null)
{
    throw removalResult.ExtendedError;
}

注意

関連するセットの場合、削除するパッケージから読み込まれるコンテンツがアプリに含まれるのを回避するために、プラットフォームでメイン アプリケーションを再起動して削除を完了する必要があります。 アプリは、アプリが API を呼び出す前に、アプリケーションを再起動する必要があるという通知をユーザーに通知する必要があります。

オプションのパッケージがコンテンツのみである場合、開発者は、開発者がオプションのパッケージを削除する前に、削除するパッケージがアプリケーションによって "使用されていない" ことを明示的にプラットフォームに伝える必要があります。 これにより、開発者は再起動せずにパッケージを削除できます。

既知の問題

現在、関連セット オプション プロジェクトのデバッグは Visual Studio でサポートされていません。 この問題を回避するには、アクティブ化を展開および起動 (Ctrl + F5) して、プロセスにデバッガーを手動でアタッチします。 デバッガーをアタッチするには、Visual Studio の [デバッグ] メニューで [プロセスにアタッチ] を選択し、メイン アプリ プロセス にデバッガーをアタッチします。