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

선택형 패키지에는 주 패키지에 통합할 수 있는 콘텐츠가 포함되어 있습니다. 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.appxmanifestXML로 > 열기(텍스트) 편집기를 선택합니다.
  4. 파일에서 <Dependencies> 요소를 찾습니다. 다음을 추가하고 2단계에서 패키지 패밀리 이름으로 바꿉 [MainPackageDependency] 있습니다. 그러면 선택적 패키지기본 패키지에 종속됩니다.
    <uap3:MainPackageDependency Name="[MainPackageDependency]"/>
    

참고

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

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

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

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

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

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

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

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

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

    중요

    새 텍스트 파일의 이름을 지정 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 "디버그" 메뉴로 이동하여 "프로세스에 연결..."을 선택하고 디버거를 기본 앱 프로세스에 연결합니다.