패키지 확장은 패키지 간에 더 광범위한 콘텐츠 공유를 허용하여 앱 확장 모델을 확장합니다. 패키지 확장 호스트는 모든 패키지의 확장을 수락할 수 있으므로 플랫폼 수준 확장성 시나리오에 적합합니다.
메모
패키지 확장은 Windows 11 네임스페이스를 uap17 사용해야 합니다. 이전 버전과 호환되는 방식을 보려면 uap3를 사용하는 앱 확장을 참고하세요.
패키지 확장 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에서 찾을 수 있으며, 여기서 문제와 끌어오기 요청을 만들고 검토할 수도 있습니다. 자세한 내용은 참여자 가이드를 참조하세요.
Windows developer