MSIX는 Main, Framework, Resource 및 Optional의 네 가지 패키지 유형을 지원합니다. MSIX는 하나 이상의 MSIX 패키지에 대한 배포 컨테이너인 번들 패키지도 지원합니다.
패키지 형식은 배포, 종속성, 실행 및 유지 관리 동작의 조합을 정의합니다. 일부 동작은 형식에 내재되어 있지만 매니페스트 선언은 다른 기본값을 재정의할 수 있습니다.
| Type | 기본 용도 | 매니페스트 또는 식별자 표시자 |
|---|---|---|
| 기본 | 애플리케이션의 기본 패키지 | 다른 패키지 형식에 대한 선언 없음 |
| 프레임워크 | 공유 라이브러리, 구성 요소 또는 런타임 콘텐츠 | <Framework>true</Framework> |
| Resource | 언어, 배율 또는 한정자별 리소스 | <ResourcePackage>true</ResourcePackage> |
| 선택 사항 | 하나의 Main 패키지와 연결된 추가 콘텐츠 | <uap3:MainPackageDependency> |
| 번들 | 여러 MSIX 패키지에 대한 배포 컨테이너 | 번들 매니페스트 및 ~ 값의 ResourceId |
주요 패키지
Main 패키지는 애플리케이션의 기본 패키지를 나타냅니다. 애플리케이션, 기능, 종속성, 확장 및 Out-of-process 서버를 선언할 수 있습니다.
매니페스트에는 명시적 Main-package 표식이 포함되어 있지 않습니다. 패키지는 자신을 다른 패키지 유형으로 선언하지 않는 경우 Main 패키지입니다.
프레임워크 패키지
프레임워크 패키지는 공유 라이브러리, 구성 요소, 리소스 또는 기타 런타임 콘텐츠를 제공합니다. 다른 패키지 또는 프로세스는 콘텐츠를 로드하기 전에 해당 패키지 그래프에 프레임워크 패키지를 추가합니다.
프레임워크 패키지는 동시 설치 버전을 지원하므로 애플리케이션은 독립적으로 최신 버전으로 이동할 수 있습니다. 패키지는 프레임워크 매니페스트 요소를 true로 설정하여 이 형식을 선언합니다.
패키지 및 패키지되지 않은 프로세스에서 프레임워크 패키지를 사용하는 방법에 대한 자세한 내용은 동적 종속성 API 사용을 참조하세요.
리소스 패키지
리소스 패키지는 언어, 표시 크기 조정 또는 기타 한정자별 리소스를 Main 또는 Optional 패키지로부터 분리합니다. Windows 디바이스 또는 사용자에게 적용되는 리소스 패키지만 설치합니다.
리소스 패키지는 기본적으로 실행을 허용하지 않습니다. 패키지는 uap6:AllowExecution을 사용하여 이 기본값을 재정의할 수 있습니다. 패키지는 ResourcePackage를 true로 설정하여 리소스 유형을 선언합니다.
선택적 패키지
선택적 패키지에는 특정 Main 패키지에 대한 추가 콘텐츠가 포함되어 있습니다. 예를 들어 애플리케이션은 다운로드 가능한 맵, 고해상도 자산 또는 선택적 도구를 별도의 패키지에 넣을 수 있습니다.
프레임워크 패키지와 달리 선택적 패키지는 하나의 Main 패키지 패밀리와 연결됩니다. uap3:MainPackageDependency를 통해 해당 관계를 선언합니다.
작성 및 관련 집합 요구 사항에 대해서는 선택적 패키지 및 관련 집합 작성을 참조하세요.
번들 패키지
MSIX 번들(.msixbundle)에는 하나 이상의 MSIX 패키지가 포함되어 있습니다. 번들은 하나의 배포 아티팩트를 제공하면서 Windows가 대상 디바이스에 적용되는 아키텍처 및 리소스 패키지만 설치할 수 있도록 합니다.
번들의 모든 패키지는 동일한 패키지 패밀리에 속합니다. 번들은 다섯 번째 배포 가능한 패키지 유형이 아닌 컨테이너입니다.
코드에서 패키지 형식 식별하기
Windows. ApplicationModel.Package 클래스는 패키지 형식을 식별하는 속성을 노출합니다.
static string GetPackageType(Windows.ApplicationModel.Package package)
{
if (package.IsBundle)
{
return "Bundle";
}
if (package.IsFramework)
{
return "Framework";
}
if (package.IsResourcePackage)
{
return "Resource";
}
if (package.IsOptional)
{
return "Optional";
}
return "Main";
}
PowerShell을 사용하여 패키지 유형 식별
기본적으로 Get-AppxPackage는 Main 및 Framework 패키지를 반환합니다.
-PackageTypeFilter를 사용하여 다른 유형을 포함합니다:
Get-AppxPackage -PackageTypeFilter Main,Framework,Resource,Optional,Bundle |
Select-Object Name, PackageFullName, IsFramework, IsResourcePackage, IsBundle
출력 개체는 IsOptional 속성을 노출하지 않습니다. 필터를 사용하여 선택적 패키지를 포함하고, 이들을 구분해야 할 때 해당 매니페스트 또는 패키지 관계를 검사합니다.