선택형 패키지 및 관련 세트 제작

선택형 패키지에는 주 패키지에 통합할 수 있는 콘텐츠가 포함되어 있습니다. DLC(다운로드 가능한 콘텐츠), 큰 앱을 크기 제한으로 나누거나 원래 앱과 별도로 추가 콘텐츠를 배송하는 데 유용합니다. 선택적 패키지에 대한 자세한 내용은 블로그 게시물: 선택적 패키지를 사용하여 애플리케이션 확장을 참조 하세요.

관련 집합은 선택적 패키지의 확장입니다. 관련 집합을 사용하면 기본 및 선택적 패키지에서 엄격한 버전 집합을 적용할 수 있습니다. 관련 집합은 스토어 외부에 배포된 경우 기본 앱과 다른 게시자를 가질 수 있습니다. 관련 집합에 대한 자세한 내용은 블로그 게시물: 관련 집합을 만드는 도구 모음을 참조 하세요.

선택적 패키지 및 관련 집합은 모두 기본 앱의 MSIX 컨테이너 내에서 실행됩니다.

필수 조건

  • Visual Studio 2019 또는 Visual Studio 2017(버전 15.1 이상)
  • Windows 10 버전 1703 이상
  • Windows 10 버전 1703 SDK 이상

최신 개발 도구를 모두 얻으려면 Windows 10용 다운로드 및 도구를 참조 하세요.

참고 항목

선택적 패키지 및/또는 관련 집합을 사용하는 앱을 Microsoft Store에 제출하려면 권한이 필요합니다. 선택적 패키지 및 관련 집합은 스토어에 제출되지 않은 경우 파트너 센터 권한이 없는 LOB(기간 업무) 또는 엔터프라이즈 앱에 사용할 수 있습니다. 선택적 패키지 및 관련 집합을 사용하는 앱을 제출할 수 있는 권한을 얻으려면 Windows 개발자 지원을 참조하세요.

코드 샘플

이 문서를 읽는 동안 Visual Studio 내에서 선택적 패키지 및 관련 집합이 작동하는 방식을 실습하려면 GitHub의 선택적 패키지 코드 샘플과 함께 수행하는 것이 좋습니다.

선택적 패키지

Visual Studio에서 선택적 패키지를 만들려면 다음을 수행해야 합니다.

  1. 앱의 대상 플랫폼 최소 버전 이 10.0.15063.0 이상으로 설정되어 있는지 확인합니다.
  2. 기본 패키지 프로젝트에서 파일을 엽니다Package.appxmanifest. "패키징" 탭으로 이동하여 "_" 문자 앞에 있는 패키지 패밀리 이름을 기록해 둡니다.
  3. 선택적 패키지 프로젝트에서 마우스 오른쪽 단추를 클릭하고 Package.appxmanifest XML로 > 열기(텍스트) 편집기를 선택합니다.
  4. 파일에서 <Dependencies> 요소를 찾습니다. 다음을 추가하고 2단계에서 패키지 패밀리 이름으로 바꿉 [MainPackageDependency]습니다. 그러면 선택적 패키지가 기본 패키지종속됩니다.
    <uap3:MainPackageDependency Name="[MainPackageDependency]"/>
    

참고 항목

다른 게시자에서 선택적 패키지를 만들려면 다른 경우 기본 애플리케이션의 게시자를 지정해야 합니다. 마찬가지로 <uap4:MainPackageDependency Name="Main_app" Publisher="CN=Contoso..." />. 스토어에 게시하는 경우에는 작동하지 않습니다.

1단계에서 4단계까지 패키지 종속성을 설정한 후에는 정상적으로 개발을 계속할 수 있습니다. 자세한 내용은 블로그 게시물: 첫 번째 선택적 패키지 빌드를 참조하세요.

선택적 패키지를 배포할 때마다 기본 패키지를 다시 배포하도록 Visual Studio를 구성할 수 있습니다. Visual Studio에서 빌드 종속성을 설정하려면 다음을 수행해야 합니다.

  1. 선택적 패키지 프로젝트를 마우스 오른쪽 단추로 클릭하고 종속성 > 프로젝트 종속성 빌드를 선택합니다...
  2. 기본 패키지 프로젝트를 확인하고 "확인"을 선택합니다.

이제 F5를 입력하거나 선택적 패키지 프로젝트를 빌드할 때마다 Visual Studio에서 먼저 기본 패키지 프로젝트를 빌드합니다. 이렇게 하면 기본 프로젝트와 선택적 프로젝트가 동기화됩니다.

관련 집합은 기본 패키지와 기본 패키지의 .appxbundle 또는 .msixbundle 파일에 지정된 메타데이터를 통해 긴밀하게 결합된 선택적 패키지로 구성됩니다. 이 메타데이터는 기본 패키지를 선택적 패키지(.appxbundle 파일 + 버전 사용) 및 선택적 패키지를 기본 패키지(버전 독립적 이름 사용)에 연결합니다. Visual Studio를 사용하면 파일에서 올바른 메타데이터를 가져올 수 있습니다.

관련된 집합의 패키지 버전 관리가 모든 관련 집합 패키지(기본 패키지의 버전에 의해 지정됨)가 설치될 때까지 최신 버전의 패키지를 사용할 수 없도록 동기화됩니다. 패키지는 독립적으로 서비스되지만 집합에 지정된 패키지는 모두 업데이트될 때까지 사용되지 않을 수 있습니다. 관련 집합에 대한 자세한 내용은 블로그 게시물: 관련 집합을 만드는 도구 모음을 참조 하세요.

관련 집합에 대한 앱 솔루션을 구성하려면 다음 단계를 사용합니다.

  1. 기본 패키지 프로젝트를 마우스 오른쪽 단추로 클릭하고 새 항목 추가 > 를 선택합니다.
  2. 창에서 설치된 템플릿에서 ".txt"를 검색하고 새 텍스트 파일을 추가합니다.

    Important

    새 텍스트 파일의 이름을 Bundle.Mapping.txt지정해야 합니다.

  3. Bundle.Mapping.txt 파일에 "[OptionalProjects]" 문자열과 선택적 패키지 프로젝트에 대한 상대 경로를 입력합니다. 예제 Bundle.Mapping.txt 파일은 다음과 같습니다.
    [OptionalProjects]
    "..\ActivatableOptionalPackage1\ActivatableOptionalPackage1.vcxproj"
    "..\ActivatableOptionalPackage2\ActivatableOptionalPackage2.vcxproj"
    

솔루션이 이러한 방식으로 구성되면 Visual Studio는 관련된 집합에 필요한 모든 메타데이터를 사용하여 기본 패키지에 대해 AppxBundleManifest.xml이라는 번들 매니페스트를 만듭니다.

선택적 패키지와 Bundle.Mapping.txt 마찬가지로 관련 집합에 대한 파일은 Windows 10 버전 1703 이상에서만 작동합니다. 또한 앱의 대상 플랫폼 최소 버전은 10.0.15063.0 이상으로 설정해야 합니다.

선택적 패키지 제거

사용자는 설정 앱으로 이동하여 선택적 패키지를 제거할 수 있습니다. 마찬가지로 개발자는 RemoveOptionalPackageAsync를 사용하여 선택적 패키지 목록을 제거할 수 있습니다.

PackageCatalog catalog = PackageCatalog.OpenForCurrentPackage();
List<string> optionalList = new List<string>();
optionalList.Add("FabrikamAgeAnalysis_kwpnjs8c36mz0");
    
// Warn user that application will be restarted. 
var result = await catalog.RemoveOptionalPackagesAsync(optionalList);
if (result.ExtendedError != null)
{
    throw removalResult.ExtendedError;
}

참고 항목

관련 집합의 경우 플랫폼은 제거되는 패키지에서 로드된 콘텐츠가 앱에 있는 상황을 방지하기 위해 제거를 완료하기 위해 기본 애플리케이션을 다시 시작해야 합니다. 앱은 앱이 API를 호출하기 전에 애플리케이션을 다시 시작해야 한다는 것을 사용자에게 알려야 합니다.

선택적 패키지가 콘텐츠인 경우에만 개발자는 개발자가 선택적 패키지를 제거하기 전에 제거하려는 패키지가 애플리케이션에서 '사용되지 않음'을 명시적으로 플랫폼에 알려야 합니다. 또한 개발자는 다시 시작하지 않고 패키지를 제거할 수 있습니다.

알려진 문제

관련 집합 선택적 프로젝트 디버깅은 현재 Visual Studio에서 지원되지 않습니다. 이 문제를 해결하려면 활성화(Ctrl + F5)를 배포하고 시작하고 디버거를 프로세스에 수동으로 연결할 수 있습니다. 디버거를 연결하려면 Visual Studio에서 "디버그" 메뉴로 이동하여 "프로세스에 연결..."을 선택하고 기본 앱 프로세스에 디버거를 연결합니다.