套件擴充功能透過允許套件間更廣泛的內容分享來擴展應用程式擴充套件模型。 套件擴充主機可接受任何套件的擴充,適合平台層級的擴充性場景。
Note
套件擴充功能需要 Windows 11,並使用 uap17 命名空間。 如需可相容於較早版本的方法,請參閱使用 uap3 的應用程式擴充功能。
套件擴充功能vs. app擴充功能
| Feature | 應用程式擴充功能 (uap3) |
套件擴充功能 (uap17) |
|---|---|---|
| 最低作業系統 | Windows 10 1607 | Windows 11 |
| Scope | 依應用程式分類 | 每套件 |
| 內容共用 | 僅限公共資料夾 | 完整套件內容存取權 |
| manifest 命名空間 | 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)。 - 調整你的擴充套件協定,讓主機應用程式能同時支援舊有和新的擴充格式。
- 使用前請驗證擴充內容——擴充功能來自其他套件,不應盲目信任。