소스 콘텐츠 그룹 맵 생성 및 변환

스트리밍 설치를 위해 앱을 준비하려면 콘텐츠 그룹 맵을 만들어야 합니다. 이 문서는 콘텐츠 그룹 맵을 만들고 변환하는 방법에 대한 세부 정보를 제공하는 동시에 몇 가지 팁과 요령을 제공하는 데 도움이 됩니다.

원본 콘텐츠 그룹 맵 만들기

파일을 만든 SourceAppxContentGroupMap.xml 다음 Visual Studio 또는 MakeAppx.exe 도구를 사용하여 이 파일을 최종 버전AppxContentGroupMap.xml으로 변환해야 합니다. 처음부터 만들어 AppxContentGroupMap.xml 단계를 건너뛸 수 있지만 와일드카드는 허용되지 않으므로 AppxContentGroupMap.xml (그리고 실제로 유용함) 만들고 SourceAppxContentGroupMap.xml 변환하는 것이 좋습니다(일반적으로 더 쉽습니다).

앱 스트리밍 설치가 도움이 되는 간단한 시나리오를 살펴보겠습니다.

게임을 만들었지만 최종 앱의 크기가 100GB를 초과했다고 가정해 보겠습니다. Microsoft Store 다운로드하는 데 시간이 오래 걸리며 불편할 수 있습니다. 앱 스트리밍 설치를 사용하도록 선택하는 경우 앱의 파일이 다운로드되는 순서를 지정할 수 있습니다. Microsoft Store 필수 파일을 먼저 다운로드하도록 알려면 사용자는 앱에 더 빨리 참여할 수 있고 다른 필수적이지 않은 파일은 백그라운드에서 다운로드됩니다.

참고

앱 스트리밍 설치를 사용하는 것은 앱의 파일 조직에 크게 의존합니다. 앱의 파일을 보다 간단하게 분할할 수 있도록 가능한 한 빨리 앱 스트리밍 설치와 관련하여 앱의 콘텐츠 레이아웃을 생각하는 것이 좋습니다.

먼저 파일을 만듭니다 SourceAppxContentGroupMap.xml .

세부 정보에 들어가기 전에 간단한 전체 SourceAppxContentGroupMap.xml 파일의 예는 다음과 같습니다.

<?xml version="1.0" encoding="utf-8"?>  
<ContentGroupMap xmlns="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap" 
                 xmlns:s="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap"> 
    <Required>
        <ContentGroup Name="Required">
            <File Name="StreamingTestApp.exe"/>
        </ContentGroup>
    </Required>
    <Automatic>
        <ContentGroup Name="Level2">
            <File Name="Assets\Level2\*"/>
        </ContentGroup>
        <ContentGroup Name="Level3">
            <File Name="Assets\Level3\*"/>
        </ContentGroup>
    </Automatic>
</ContentGroupMap>

콘텐츠 그룹 맵에는 필수 콘텐츠 그룹이 포함된 필수 섹션과 여러 자동 콘텐츠 그룹을 포함할 수 있는 자동 섹션의 두 가지 주요 구성 요소가 있습니다.

필수 콘텐츠 그룹

필수 콘텐츠 그룹은 .의 SourceAppxContentGroupMap.xml요소 내의 <Required> 단일 콘텐츠 그룹입니다. 필요한 콘텐츠 그룹에는 최소한의 사용자 환경으로 앱을 시작하는 데 필요한 모든 필수 파일이 포함되어야 합니다. .NET 네이티브 컴파일로 인해 모든 코드(애플리케이션 실행 파일)는 필요한 그룹의 일부여야 하며 자동 그룹에 대한 자산 및 기타 파일을 남깁니다.

예를 들어 앱이 게임인 경우 필수 그룹에는 주 메뉴 또는 게임 홈 화면에 사용되는 파일이 포함될 수 있습니다.

원래 SourceAppxContentGroupMap.xml 예제 파일의 코드 조각은 다음과 같습니다.

<Required>
    <ContentGroup Name="Required">
        <File Name="StreamingTestApp.exe"/>
    </ContentGroup>
</Required>

다음과 같은 몇 가지 중요한 사항을 확인할 수 있습니다.

  • 요소 내의 <ContentGroup><Required> 이름은 "Required" 여야 합니다 . 이 이름은 필수 콘텐츠 그룹에만 예약되어 있으며 최종 콘텐츠 그룹 맵의 다른 <ContentGroup> 이름과 함께 사용할 수 없습니다.
  • 단 하나 <ContentGroup>만 있습니다. 필수 파일 그룹은 하나만 있어야 하므로 이는 의도적인 것입니다.
  • 이 예제의 파일은 단일 .exe 파일입니다. 필수 콘텐츠 그룹은 하나의 파일로 제한되지 않으며 여러 파일이 있을 수 있습니다.

이 파일 쓰기를 시작하는 쉬운 방법은 즐겨 찾는 텍스트 편집기에서 새 페이지를 열고, 파일의 빠른 "다른 이름으로 저장"을 앱의 프로젝트 폴더에 수행하고, 새로 만든 파일 SourceAppxContentGroupMap.xml의 이름을 지정하는 것입니다.

중요

C++ 앱을 SourceAppxContentGroupMap.xml개발하는 경우 . Content 속성을 true로 설정하고 속성을 File TypeXML 파일로 설정합니다.

만들 SourceAppxContentGroupMap.xml때 파일 이름에 와일드카드를 사용하는 것이 좋습니다. 자세한 내용은 와일드카드 섹션을 사용하기 위한 팁 및 요령을 참조하세요.

Visual Studio 사용하여 앱을 개발한 경우 필요한 콘텐츠 그룹에 포함하는 것이 좋습니다.

<File Name="*"/>
<File Name="WinMetadata\*"/>
<File Name="Properties\*"/>
<File Name="Assets\*Logo*"/>
<File Name="Assets\*SplashScreen*"/>

단일 와일드카드 파일 이름을 추가하면 앱 실행 파일 또는 DLL과 같은 Visual Studio 프로젝트 디렉터리에 추가된 파일이 포함됩니다. WinMetadata 및 속성 폴더는 생성할 Visual Studio 다른 폴더를 포함해야 합니다. 자산 와일드카드는 앱을 설치하는 데 필요한 로고 및 SplashScreen 이미지를 선택하는 것입니다.

최종AppxContentGroupMap.xml으로 변환 SourceAppxContentGroupMap.xml 하려고 할 때 실패하므로 파일 구조의 루트에 있는 이중 와일드카드 "**"를 사용하여 프로젝트의 모든 파일을 포함할 수 없습니다.

또한 공간 파일(AppxManifest.xml, AppxSignature.p7x, resources.pri 등)은 콘텐츠 그룹 맵에 포함되지 않아야 합니다. 지정한 와일드카드 파일 이름 중 하나에 포함되는 공간 파일은 무시됩니다.

자동 콘텐츠 그룹

자동 콘텐츠 그룹은 사용자가 이미 다운로드한 콘텐츠 그룹과 상호 작용하는 동안 백그라운드에서 다운로드되는 자산입니다. 여기에는 앱을 시작하는 데 필수적이지 않은 추가 파일이 포함됩니다. 예를 들어 자동 콘텐츠 그룹을 다른 수준으로 분할하여 각 수준을 별도의 콘텐츠 그룹으로 정의할 수 있습니다. 필수 콘텐츠 그룹 섹션에서 설명한 대로: .NET 네이티브 컴파일로 인해 모든 코드(애플리케이션 실행 파일)는 필요한 그룹의 일부여야 하며 자동 그룹에 대한 자산 및 기타 파일을 남깁니다.

이 예제에서 SourceAppxContentGroupMap.xml 자동 콘텐츠 그룹을 자세히 살펴보겠습니다.

<Automatic>
    <ContentGroup Name="Level2">
        <File Name="Assets\Level2\*"/>
    </ContentGroup>
    <ContentGroup Name="Level3">
        <File Name="Assets\Level3\*"/>
    </ContentGroup>
</Automatic>

자동 그룹의 레이아웃은 몇 가지 예외를 제외하고 필요한 그룹과 매우 유사합니다.

  • 여러 콘텐츠 그룹이 있습니다.
  • 자동 콘텐츠 그룹에는 필수 콘텐츠 그룹에 대해 예약된 "필수" 이름을 제외하고 고유한 이름이 있을 수 있습니다.
  • 자동 콘텐츠 그룹에는 필요한 콘텐츠 그룹의 파일이 포함될 수 없습니다.
  • 자동 콘텐츠 그룹에는 다른 자동 콘텐츠 그룹에 있는 파일도 포함될 수 있습니다. 파일은 한 번만 다운로드되며 파일이 포함된 첫 번째 자동 콘텐츠 그룹과 함께 다운로드됩니다.

와일드카드 사용에 대한 팁 및 요령

콘텐츠 그룹 맵의 파일 레이아웃은 항상 프로젝트 루트 폴더를 기준으로 합니다.

이 예제에서 와일드카드는 두 <ContentGroup> 요소 내에서 "Assets\Level2" 또는 "Assets\Level3"의 한 파일 수준 내에서 모든 파일을 검색하는 데 사용됩니다. 더 깊은 폴더 구조를 사용하는 경우 이중 와일드카드를 사용할 수 있습니다.

<ContentGroup Name="Level2">
    <File Name="Assets\Level2\**"/>
</ContentGroup>

파일 이름에 텍스트가 있는 와일드카드를 사용할 수도 있습니다. 예를 들어 "Assets" 폴더의 모든 파일을 "Level2"가 포함된 파일 이름으로 포함하려는 경우 다음과 같이 사용할 수 있습니다.

<ContentGroup Name="Level2">
    <File Name="Assets\*Level2*"/>
</ContentGroup>

SourceAppxContentGroupMap.xml AppxContentGroupMap.xml 변환

최종 버전AppxContentGroupMap.xml으로 변환 SourceAppxContentGroupMap.xml 하려면 Visual Studio 2017 또는 MakeAppx.exe 명령줄 도구를 사용할 수 있습니다.

Visual Studio 사용하여 콘텐츠 그룹 맵을 변환하려면 다음을 수행합니다.

  1. 프로젝트 폴더에 SourceAppxContentGroupMap.xml 추가
  2. 속성 창 "AppxSourceContentGroupMap"의 빌드 동작SourceAppxContentGroupMap.xml을 변경합니다.
  3. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭합니다.
  4. Microsoft Store 이동 -> 콘텐츠 그룹 맵 파일 변환

Visual Studio 앱을 개발하지 않았거나 명령줄을 사용하려는 경우 MakeAppx.exe 도구를 사용하여 변환합니다SourceAppxContentGroupMap.xml.

간단한 MakeAppx.exe 명령은 다음과 같이 표시될 수 있습니다.

MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\

/s 옵션은 에 대한 SourceAppxContentGroupMap.xml경로를 지정하고 /f는 .에 대한 AppxContentGroupMap.xml경로를 지정합니다. 마지막 옵션인 /d는 파일 이름 와일드카드를 확장하는 데 사용해야 하는 디렉터리를 지정합니다. 이 경우 앱 프로젝트 디렉터리입니다.

MakeAppx.exe사용할 수 있는 옵션에 대한 자세한 내용은 명령 프롬프트를 열고 MakeAppx.exe 이동하여 다음을 입력합니다.

MakeAppx convertCGM /?

그게 당신이 당신의 응용 프로그램에 대한 최종 AppxContentGroupMap.xml 준비를하는 데 필요한 전부입니다! 앱이 Microsoft Store 완전히 준비되기 전에 해야 할 일이 더 있습니다. 앱에 스트리밍 설치를 추가하는 방법에 대한 자세한 내용은 이 페이지를 확인하세요.