Share via


Visual Studio によるアプリ パッケージ マニフェストの生成方法

Visual Studio を使用してプロジェクトをビルドすると、Visual Studio によってパッケージ マニフェスト (AppxManifest.xml) が生成されます。このマニフェストには、システムが ユニバーサル Windows プラットフォーム (UWP) アプリをデプロイ、表示、または更新するために必要な情報が含まれます。

次の 2 種類のアプリ パッケージ マニフェスト ファイルを使用してアプリを開発する場合に発生Visual Studio

  • Package.appxmanifest
    これは、発行元情報、ロゴ、プロセッサ アーキテクチャなど、アプリの詳細を構成するために開発者が使用する XML スタイル ファイルです。これは、アプリ開発中に使用されるアプリ パッケージ マニフェストの簡単に構成可能な一時バージョンです。
  • AppxManifest.xml
    このファイルは、ビルド プロセスVisual Studio生成され、Package.appxmanifest ファイル内の情報に基づいて作成されます。 これは、発行されたアプリとサイドロードされたアプリで使用されるアプリ パッケージ マニフェストの最終バージョンです。 Package.appxmanifest ファイルに対して更新が行われた場合は、プロジェクトをリビルドして、AppxManifest.xml ファイルで更新を確認する必要があります。

パッケージ化プロセスの概要については、「パッケージを使用して UWP アプリをパッケージ化する」をVisual Studio

アプリ マニフェストの検証

アプリを発行する前に、Visual Studio の検証チェックで失敗したエラーがあればすべて修正する必要があります。 Visual Studio でマニフェストが生成されると、Visual Studio はアプリを次の方法で検証します。

  • 構文検証
    アプリ マニフェストのすべてのデータがアプリ マニフェストのスキーマに準拠しているかどうかを確認します。
  • セマンティック検証
    Visual Studio で、情報のコンテキストに基づいて、予想されるデータのガイダンスが提供されます。

注意

これらのセクションで、探しているフィールドが言及されていない場合は、個別に構成されている可能性があるデータか、マニフェスト スキーマの既定値から生成されます。

マニフェストのコンテンツの生成

Visual Studio、アプリ パッケージの AppxManifest.xml ファイルを生成するときに、次の表のフィールドを設定します。

ID

アプリ Identity マニフェストの セクションには、次のフィールドが含まれています。

フィールド 説明
名前 次のシナリオでは、パッケージの名前が異なる方法で設定されます。
  • 既定では、このフィールドの値は、生成された GUID です。
  • アプリを Microsoft Store に関連付ける場合、または Store -> Create App Packages... コマンドを呼び出して開発者アカウントでサインインした場合、このフィールドの値は Microsoft Store または パートナー センター の関連付けられているアプリから取得されます。
  • Store -> Create App Packages... コマンドを呼び出したが、開発者アカウントでサインインしない場合、このフィールドの値はソース マニフェストから取得されます。
Publisher 発行元の名前。 この名前は、次のシナリオごとに設定される方法が異なります。
  • 既定では、このフィールドの値は、発行者のユーザー名です。
  • アプリを Microsoft Store に関連付ける場合、または Store -> Create App Packages... コマンドを呼び出して開発者アカウントでサインインした場合、このフィールドの値はアカウントに関連付けられている発行元になります。
  • Store -> Create App Packages... コマンドを呼び出したが、開発者アカウントでサインインしない場合、このフィールドの値は、アプリ パッケージの署名に使用したテスト証明書のサブジェクト フィールドと一致します。
Visual Studio発行者の共通名 (CN) フォームのみをサポートし、マニフェストのパブリッシャー フィールドにプレフィックス "CN=" を追加します。
バージョン ビルドするアプリのバージョン。 これは通常、アプリが変更およびパッケージ化されるごとに増分されます。 が正しくインクリメントされるようにVersionするには、ストア -> アプリ パッケージの作成...を呼び出す際に表示されるダイアログを使用して、更新を行います。
ProcessorArchitecture プロジェクトに指定したビルド構成に基づいて生成される 値。 プロジェクト内のプロジェクト参照またはファイル参照がアプリ パッケージとは異なる特定のアーキテクチャを対象とする場合は、ビルド エラーがスローされ、すべての参照で動作するアプリ パッケージのターゲット アーキテクチャを変更する必要があります。

出力 XML の例を次に Identity 示します。

<Identity Name="Microsoft.UWPAppExample"
          Publisher="CN=Microsoft Corporation"
          Version="1.0.0.0"
          ProcessorArchitecture="x86" />

プロパティ

アプリ Properties マニフェストの セクションには、次の表のフィールドが含まれています。

フィールド 説明
PublisherDisplayName この文字列は、次のシナリオでは異なる方法で設定されます。
  • 既定では、このフィールドの値は、発行者のユーザー名です。
  • アプリを Microsoft Store に関連付ける場合、または Store -> Create App Packages... コマンドを呼び出して開発者アカウントでサインインした場合、このフィールドの tha 値は、開発者アカウントに関連付けられている PublisherDisplayName 文字列と一致します。
  • Store -> Create App Packages...コマンドを呼び出したが、開発者アカウントでサインインしない場合、Package.appxmanifest ファイルで特に指定しない限り、このフィールドの値はユーザー名になります。
DisplayName この文字列は、次のシナリオごとに設定される方法が異なります。
  • 既定では、このフィールドの値は、プロジェクトの名前です。
  • アプリを Microsoft Store に関連付ける場合、または Store -> Create App Packages... コマンドを呼び出して開発者アカウントでサインインした場合、このフィールドの値は次の規則に従って設定されます。
    • ソース マニフェストでこの @ 値を指定し、値が (この値をローカライズする必要がある) で始まる場合、このフィールドの値は指定した値と一致します。
    • 選択したアプリケーションの名前が 1 つだけの場合、値はその名前になります。
    • 選択したアプリに複数の名前があるが、ソース マニフェストがローカライズされていない場合、値はソース マニフェストの表示名に設定されます。 それ以外の場合は、値が最初の予約済みの名前に設定されます。
  • Store -> Create App Packages... コマンドを呼び出したが、開発者アカウントでサインインしない場合、このフィールドの値はソース マニフェストから取得されます。
ロゴ 既定Visual Studioテンプレートでは がAssets\StoreLogo.png使用されます。 この値は、開発者が Package.appxmanifest ファイルでカスタマイズする必要があります。

出力 XML の例を次に Properties 示します。

<Properties>
    <DisplayName>UWP App Example</DisplayName>
    <PublisherDisplayName>Microsoft Corporation</PublisherDisplayName>
    <Logo>Assets\StoreLogo.png</Logo>
</Properties>

Application

アプリ マニフェストには複数の要素を Application 含め、それぞれがクライアントのタイルに表示される表示名を持つ場合があります。 アプリ Application マニフェストの セクションには、次の表のフィールドが含まれています。

フィールド 説明
Id この文字列は、次のシナリオごとに設定される方法が異なります。
  • 既定では、このフィールドの値は、プロジェクトの名前です。
  • アプリを Microsoft Store に関連付ける場合、または Store -> Create App Packages.../Properties[@DisplayName]/Applications/Application[@DisplayName]コマンドを呼び出して開発者アカウントでサインインした場合、このフィールドの値は、ソース マニフェスト内の と が一致する場合、選択したアプリのアプリ名になります。 それ以外の場合、値は、ソース マニフェストのものと同じまま残ります。
  • Store -> Create App Packages... コマンドを呼び出したが、開発者アカウントでサインインしない場合、このフィールドの値はソース マニフェストと同じです。
実行可能ファイル このフィールドの値は、プロジェクト アセンブリの出力名です。 ソース マニフェスト ファイル (Package.appxmanifest) で使用される実行可能トークン $targetnametoken$.exe は、マニフェストのビルド時に実際のファイル名に置き換えられる。
EntryPoint この値は、生成された 値と 値に Executable 基づいて作成 Id されます。

出力例 Application :

<Applications>
    <Application Id="App" Executable="UWPAppExample.exe" EntryPoint="UWPAppExample.App">
        <!-- Other elements configured within the Application, such as Extensions, VisualElements, etc. -->
</Applications>

PackageDependency

セクションPackageDependencyには、このパッケージWindowsコンポーネント ライブラリのすべての依存関係が含まれています。 たとえば、プロジェクトに WinJS への参照がある場合、Visual Studioマニフェストが生成されると、依存関係のパッケージ ID 情報が取得されます。 Visual Studio、このセクションに、各依存パッケージの Name フィールドMinVersionと フィールドを設定します。

ネイティブ C++ プロジェクトでは、Visual Studio Visual C/C++ ランタイムへの参照が追加されます。

<Dependencies>
    <PackageDependency Name="Microsoft.VCLibs.140.00.Debug" MinVersion="14.0.30035.0" Publisher="CN=Microsoft Corporation, O=Microsoft Corporation, L=Redmond, S=Washington, C=US" />
</Dependencies>

Windows ランタイム登録拡張機能

アプリのWindows ランタイムコンポーネントを実装できますが、正しく実行するには、それらのコンポーネントをオペレーティング システムに登録する必要があります。 アプリケーション コンポーネントをWindows ランタイムするには、WinMD ファイルとアプリ マニフェストに登録情報を配置する必要があります。 プロジェクトが新しいコンポーネントをWindows ランタイム場合、プロジェクトのビルド出力には WinMD ファイルが含まれるはずです。 Visual Studio WinMD ファイルWindows ランタイム登録情報を抽出し、アプリ マニフェストExtensionに適切な要素を生成します。

システムでは、.dll サーバー (インプロセス) と .exe サーバー (アウトプロセス) の 2 つの形式のサーバーがサポートされます。 これらのサーバーには、似ているが異なる登録情報が必要で、この情報をアプリ マニフェストにコピーする必要があります。 Visual Studio では、.dll サーバーのマニフェスト生成のみがサポートされており、.dll サーバーを登録するには、DLLServer 拡張機能が必要です。 アプリ マニフェストの次の値は、DLLServer 拡張機能を構築するために WinMD ファイルから取得されます。

  • DllPath
  • ActivatableClassId
  • ThreadingModel
  • ActivatableClass (ActivatableClassId 属性)

出力 XML の例を次に示します。

<extension category="Microsoft.Windows.ActivatableClass">
    <dllServer>
        <dllPath>Fabrikam.dll</dllPath>
        <activatableClass activatableClassId="Fabrikam.MyClass" threadingModel="sta" />
    </dllServer>
</extension>

このトピックの詳細については、「 Windows ランタイムコンポーネント」を参照してください。

リソース

このセクションに Resources は、アプリケーションがサポートする各言語のエントリが含まれています。 アプリマニフェストには、少なくとも1つのリソース言語が指定されている必要があります。 プロジェクトのローカリゼーション情報に基づいて、サポートされている言語のリストが Visual Studio で自動的に生成されます。 ソースマニフェストファイル (package.appxmanifest) で使用されるリソース言語トークン "x generate" は、マニフェストのビルド時に実際の言語コードに置き換えられます。 出力 XML の例を次に示します。

<Resources>
    <Resource Language="en-us">
    <Resource Language="fr-fr">
</Resources>

リストの最初のエントリはアプリケーションの既定の言語です。

TargetDeviceFamily

セクションに TargetDeviceFamily は、次のフィールドがあります。

  • 名前
  • MinVersion
  • MaxVersionTested
<Dependencies>
    <TargetDeviceFamily Name="Windows.Universal" MinVersion="10.0.17763.0" MaxVersionTested="10.0.22000.0" />
</Dependencies>

これらの要素は MSBuild プロパティから設定されます。

こちらもご覧ください

Visual Studio で UWP アプリをパッケージ化する
アプリ パッケージのアーキテクチャ
Windows 10 パッケージ マニフェストのスキーマ参照