パッケージ拡張機能は、パッケージ間でのより広範なコンテンツ共有を可能にすることで、アプリ拡張機能モデルを拡張します。 パッケージ拡張機能ホストは、任意のパッケージの拡張機能を受け入れることができ、プラットフォーム レベルの拡張シナリオに適しています。
パッケージ拡張機能vs. app拡張機能
| 特徴 | アプリ拡張機能 (uap3) |
パッケージ拡張機能 (uap17) |
|---|---|---|
| 最小 OS | Windows 10 1607 | ウィンドウズ11 |
| Scope | アプリケーションごと | パッケージごと |
| コンテンツ共有 | パブリック フォルダーのみ | フル パッケージ コンテンツ アクセス |
| マニフェスト名前空間 | uap3:AppExtension |
uap17:PackageExtension |
パッケージ拡張機能ホストを宣言する
ホスト アプリのマニフェストに PackageExtensionHost 宣言を追加します。
<Package xmlns:uap17="http://schemas.microsoft.com/appx/manifest/uap/windows10/17" ...>
<Applications>
<Application ...>
<Extensions>
<uap17:Extension Category="windows.packageExtensionHost">
<uap17:PackageExtensionHost>
<uap17:Name>com.example.myplatform.extensions</uap17:Name>
</uap17:PackageExtensionHost>
</uap17:Extension>
</Extensions>
</Application>
</Applications>
</Package>
パッケージ拡張機能を宣言する
拡張機能パッケージのマニフェストで、次の手順を実行します。
<Package xmlns:uap17="http://schemas.microsoft.com/appx/manifest/uap/windows10/17" ...>
<Applications>
<Application ...>
<Extensions>
<uap17:Extension Category="windows.packageExtension">
<uap17:PackageExtension Name="com.example.myplatform.extensions"
Id="MyExtension"
DisplayName="My Extension"
Description="Adds features to the platform">
<uap17:Properties>
<ExtensionType>content</ExtensionType>
<Version>1.0</Version>
</uap17:Properties>
</uap17:PackageExtension>
</uap17:Extension>
</Extensions>
</Application>
</Applications>
</Package>
パッケージ拡張機能の検出
実行時にパッケージ拡張機能を検出するには、同じ AppExtensionCatalog API を使用します。 ホスト名は、マニフェストで宣言されている Name と一致します。
var catalog = AppExtensionCatalog.Open("com.example.myplatform.extensions");
var extensions = await catalog.FindAllAsync();
foreach (var ext in extensions)
{
System.Diagnostics.Debug.WriteLine(
$"Found extension: {ext.DisplayName} ({ext.Id})");
// Read custom properties
var properties = await ext.GetExtensionPropertiesAsync();
// Access properties as needed
}
ベスト プラクティス
- 拡張名には逆ドメインの名前付け規則を使用します (たとえば、
com.company.app.extensions)。 - ホスト アプリが古い拡張形式と新しい拡張形式を処理できるように、拡張機能プロトコルをバージョン管理します。
- 拡張機能のコンテンツを使用する前に検証します。拡張機能は他のパッケージから取得され、盲目的に信頼されるべきではありません。
関連するコンテンツ
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
Windows developer