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

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

関連セットは、オプション パッケージの延長です。 関連セットを使用すると、メイン パッケージとオプション パッケージを組み合わせて厳密なバージョン セットを実現できます。 Microsoft Store の外部でデプロイされる関連セットには、メイン アプリとは異なる公開元を割り当てることができます。 関連セットの詳細については、「ブログ記事: 関連セットを作成するためのツール」を参照してください。

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

前提条件

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

最新の開発ツールをすべて入手するには、「Windows 10 のダウンロードとツール」を参照してください

Note

オプション パッケージや関連セットを使用するアプリを Microsoft Store に提出するには、許可が必要です。 ストアに提出しない場合は、パートナー センターから許可を受けずにオプション パッケージや関連セットを基幹業務 (LOB) アプリやエンタープライズ アプリに使用できます。 オプション パッケージと関連セットを使用するアプリを送信する許可を取得するには、「Windows Developer サポート」を参照してください。

コード サンプル

この記事を読んでいる間は、オプションのパッケージと関連セットが Visual Studio 内でどのように機能するかを実際に理解するために、GitHub の省略可能なパッケージ コード サンプルに従うことをお勧めします。

オプション パッケージ

Visual Studio で省略可能なパッケージを作成するには、次の手順を実行する必要があります。

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

Note

別の公開元のオプション パッケージを作成したい場合は、メイン アプリケーションの公開元を指定する必要があります (両者が異なる場合)。 たとえば、「<uap4:MainPackageDependency Name="Main_app" Publisher="CN=Contoso..." />」のようにします。 Microsoft Store に公開する場合、これは正しく機能しません。

手順 1 から 4 を実行してパッケージの依存関係を設定できたら、通常の開発作業に進むことができます。 詳細については、「ブログ記事: 初めてのオプション パッケージを作成する」を参照してください。

Visual Studio は、省略可能なパッケージを展開するたびに、メイン パッケージを再デプロイするように構成できます。 Visual Studio でビルドの依存関係を設定するには、次の手順を実行する必要があります。

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

F5 キーを押すか、省略可能なパッケージ プロジェクトをビルドするたびに、Visual Studio によって最初に メイン パッケージ プロジェクトがビルドされます。 これにより、メイン プロジェクトと省略可能なプロジェクトが確実に同期されます。

関連セットは、メイン パッケージとオプション パッケージから成ります。メイン パッケージの .appxbundle または .msixbundle ファイルに指定されたメタデータによって両者は密に結合されます。 このメタデータによって、メイン パッケージは (.appxbundle ファイルの名前 + バージョンを使用して) オプション パッケージにリンクされ、また、オプション パッケージは (バージョン非依存の名前を使用して) メイン パッケージにリンクされます。 Visual Studio は、ファイル内の正しいメタデータを取得するのに役立ちます。

関連セット内のパッケージのバージョンは、その関連セットの (メイン パッケージにバージョンで指定された) パッケージがすべてインストールされるまではいずれのパッケージの最新バージョンも使用できないような形で同期されます。 パッケージは個別に提供されますが、セットに指定されたパッケージは、そのすべてが更新されて初めて使用できるようになります。 関連セットの詳細については、「ブログ記事: 関連セットを作成するためのツール」を参照してください。

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

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

    重要

    新しいテキスト ファイルには、 Bundle.Mapping.txt次の名前を付ける必要があります。

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

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

オプション パッケージと同様、関連セットの Bundle.Mapping.txt ファイルも、Windows 10 Version 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;
}

Note

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

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

既知の問題

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