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

스트리밍 설치를 위해 앱을 준비 하려면 콘텐츠 그룹 맵을 만들어야 합니다. 이 문서는 콘텐츠 그룹 맵을 만들고 변환 하는 방법에 대해 설명 하 고이에 따라 몇 가지 팁과 요령을 제공 합니다.

원본 콘텐츠 그룹 맵 만들기

파일을 만든 SourceAppxContentGroupMap.xml 다음 Visual Studio 또는 SourceAppxContentGroupMap.xml 도구를 사용 하 여이 파일을 최종 버전으로 변환 해야 AppxContentGroupMap.xml 합니다. 에서 와일드 카드를 사용할 수 없기 때문에 단계를 처음부터 새로 만들어 단계를 건너뛸 수 있습니다 .이는에서 AppxContentGroupMap.xmlSourceAppxContentGroupMap.xml 와일드 카드를 사용할 수 없기 때문 AppxContentGroupMap.xml 입니다.

앱 스트리밍 설치가 유용한 간단한 시나리오를 살펴보겠습니다.

게임을 만들었지만 최종 앱의 크기가 100를 초과 하는 경우를 가정해 보겠습니다. 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>

콘텐츠 그룹 맵에는 두 가지 주요 구성 요소가 있습니다. 필수 섹션에는 필요한 콘텐츠 그룹이 포함 되 고 자동 섹션에는 여러 개의 자동 콘텐츠 그룹이 포함 될 수 있습니다.

필요한 콘텐츠 그룹

필요한 콘텐츠 그룹은의 요소 내에 있는 단일 콘텐츠 그룹입니다 <Required>SourceAppxContentGroupMap.xml . 필요한 콘텐츠 그룹은 최소한의 사용자 환경으로 앱을 시작 하는 데 필요한 모든 필수 파일을 포함 해야 합니다. .NET 네이티브 컴파일 때문에 모든 코드 (응용 프로그램 실행 파일)는 필요한 그룹의 일부 여야 하며, 자산 및 기타 파일은 자동 그룹으로 유지 해야 합니다.

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

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

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

여기에는 몇 가지 중요 한 사항이 있습니다.

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

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

중요

C + + 응용 프로그램을 개발 하는 경우의 파일 속성을 조정 해야 SourceAppxContentGroupMap.xml 합니다. 속성을 ContentContent 로 설정 하 고 File Type 속성을 File Type설정 합니다.

를 만들 때 SourceAppxContentGroupMap.xml 파일 이름에 와일드 카드 사용을 활용 하는 것이 좋습니다. 자세한 내용은 SourceAppxContentGroupMap.xml 섹션을 참조 하십시오.

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

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

단일 와일드 카드 파일 이름을 추가 하면 응용 프로그램 실행 파일 또는 dll과 같은 Visual Studio에서 프로젝트 디렉터리에 추가 되는 파일이 포함 됩니다. winmetadata 및 Properties 폴더는 Visual Studio 생성 하는 다른 폴더를 포함 합니다. 자산 와일드 카드는 앱을 설치 하는 데 필요한 로고 및 SplashScreen 이미지를 선택 하는 것입니다.

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

또한 공간 파일 (AppxManifest.xml, 따라서 appxsignature.p7x, 라는 등)을 확인 하는 것이 중요 합니다. 콘텐츠 그룹 맵에 포함 되어서는 안 됩니다. 지정 하는 와일드 카드 파일 이름 중 하나에 공간 파일이 포함 되어 있으면 무시 됩니다.

자동 콘텐츠 그룹

자동 콘텐츠 그룹은 사용자가 이미 다운로드 한 콘텐츠 그룹과 상호 작용 하는 동안 백그라운드에서 다운로드 되는 자산입니다. 여기에는 앱을 시작 하는 데 필수적이 지 않은 추가 파일이 포함 됩니다. 예를 들어의 자동 콘텐츠 그룹을 여러 수준으로 분할 하 여 각 수준을 별도의 콘텐츠 그룹으로 정의할 수 있습니다. 필요한 콘텐츠 그룹 섹션에 설명 된 대로: .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>

파일 이름에 텍스트와 함께 와일드 카드를 사용할 수도 있습니다. 예를 들어 "Level2"를 포함 하는 파일 이름을 사용 하 여 "자산" 폴더에 모든 파일을 포함 하려는 경우 다음과 같은 항목을 사용할 수 있습니다.

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

SourceAppxContentGroupMap.xml를 AppxContentGroupMap.xml으로 변환

를 최종 버전으로 변환 하기 위해 SourceAppxContentGroupMap.xmlAppxContentGroupMap.xml Visual Studio 2017 또는 SourceAppxContentGroupMap.xml 명령줄 도구를 사용할 수 있습니다.

Visual Studio를 사용 하 여 콘텐츠 그룹 맵을 변환 하려면:

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

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

간단한 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에 대해 완전히 준비 되기 전에 더 많은 작업을 수행 해야 합니다. 앱에 스트리밍 설치를 추가 하는 전체 과정에 대 한 자세한 내용은 이 블로그 게시물을 확인 하세요.