소스 콘텐츠 그룹 맵 생성 및 변환Create and convert a source content group map

스트리밍 설치를 위해 앱을 준비 하려면 콘텐츠 그룹 맵을 만들어야 합니다.To get your app ready for streaming install, you'll need to create a content group map. 이 문서는 콘텐츠 그룹 맵을 만들고 변환 하는 방법에 대해 설명 하 고이에 따라 몇 가지 팁과 요령을 제공 합니다.This article will help you with the specifics of creating and converting a content group map while providing some tips and tricks along the way.

원본 콘텐츠 그룹 맵 만들기Creating the source content group map

파일을 만든 SourceAppxContentGroupMap.xml 다음 Visual Studio 또는 MakeAppx.exe 도구를 사용 하 여이 파일을 최종 버전으로 변환 해야 AppxContentGroupMap.xml 합니다.You'll need to create a SourceAppxContentGroupMap.xml file, and then either use Visual Studio or the MakeAppx.exe tool to convert this file to the final version: AppxContentGroupMap.xml. 에서 와일드 카드를 사용할 수 없기 때문에 단계를 처음부터 새로 만들어 단계를 건너뛸 수 있습니다 .이는에서 AppxContentGroupMap.xml SourceAppxContentGroupMap.xml 와일드 카드를 사용할 수 없기 때문 AppxContentGroupMap.xml 입니다.It's possible to skip a step by creating the AppxContentGroupMap.xml from scratch, but it's recommended (and generally easier) to create the SourceAppxContentGroupMap.xml and convert it, since wildcards are not allowed in the AppxContentGroupMap.xml (and they're really helpful).

앱 스트리밍 설치가 유용한 간단한 시나리오를 살펴보겠습니다.Let's walk through a simple scenario where app streaming install is beneficial.

게임을 만들었지만 최종 앱의 크기가 100를 초과 하는 경우를 가정해 보겠습니다.Say you've created a game, but the size of your final app is over 100 GB. Microsoft Store에서 다운로드 하는 데 시간이 오래 걸리므로 불편할 수 있습니다.That's going to take a long time to download from the Microsoft Store, which can be inconvenient. 앱 스트리밍 설치를 사용 하도록 선택 하는 경우 앱의 파일을 다운로드 하는 순서를 지정할 수 있습니다.If you choose to use app streaming install, you can specify the order in which your app's files are downloaded. 먼저 중요 한 파일을 다운로드 하도록 저장소에 지시 하 여 사용자는 앱에 더 빨리 참여할 수 있으며, 다른 중요 하지 않은 파일은 백그라운드에서 다운로드 됩니다.By telling the Store to download essential files first, the user will be able to engage with your app sooner while other non-essential files are downloaded in the background.

참고

앱 스트리밍 설치를 사용 하면 앱의 파일 조직에 크게 의존 합니다.Using app streaming install heavily relies on your app's file organization. 앱의 파일을 보다 쉽게 분할 하기 위해 앱 스트리밍 설치와 관련 하 여 앱의 콘텐츠 레이아웃에 대해 생각 하는 것이 좋습니다.It's recommended that you think about your app's content layout with respect to app streaming install as soon as possible to make segmenting your app's files simpler.

먼저 파일을 만듭니다 SourceAppxContentGroupMap.xml .First, we'll create a SourceAppxContentGroupMap.xml file.

세부 정보를 얻기 전에 다음은 간단한 전체 파일의 예입니다 SourceAppxContentGroupMap.xml .Before we get in to the details, here's an example of a simple, complete SourceAppxContentGroupMap.xml file:

<?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>

콘텐츠 그룹 맵에는 두 가지 주요 구성 요소가 있습니다. 필수 섹션에는 필요한 콘텐츠 그룹이 포함 되 고 자동 섹션에는 여러 개의 자동 콘텐츠 그룹이 포함 될 수 있습니다.There are two main components to a content group map: the required section, which contains the required content group, and the automatic section, which can contain multiple automatic content groups.

필요한 콘텐츠 그룹Required content group

필요한 콘텐츠 그룹은의 요소 내에 있는 단일 콘텐츠 그룹입니다 <Required> SourceAppxContentGroupMap.xml .The required content group is a single content group within the <Required> element of the SourceAppxContentGroupMap.xml. 필요한 콘텐츠 그룹은 최소한의 사용자 환경으로 앱을 시작 하는 데 필요한 모든 필수 파일을 포함 해야 합니다.A required content group should contain all of the essential files necessary to launch the app with the minimal user experience. .NET 네이티브 컴파일 때문에 모든 코드 (응용 프로그램 실행 파일)는 필요한 그룹의 일부 여야 하며, 자산 및 기타 파일은 자동 그룹으로 유지 해야 합니다.Due to .NET Native compilation, all code (the application executable) must be part of the required group, leaving assets and other files for the automatic groups.

예를 들어 앱이 게임 인 경우 필수 그룹에는 주 메뉴 또는 게임 홈 화면에 사용 되는 파일이 포함 될 수 있습니다.For example, if your app is a game, the required group may include files used in the main menu or game home screen.

원래 예제 파일의 코드 조각은 SourceAppxContentGroupMap.xml 다음과 같습니다.Here's the snippet from our original SourceAppxContentGroupMap.xml example file:

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

여기에는 몇 가지 중요 한 사항이 있습니다.There are a few important things to notice here:

  • <ContentGroup>요소 내의는 <Required> "Required"로 이름을 지정 해야 합니다.The <ContentGroup> within the <Required> element must be named "Required." 이 이름은 필수 콘텐츠 그룹에 대해서만 예약 되며 <ContentGroup> 최종 콘텐츠 그룹 맵에는 사용할 수 없습니다.This name is reserved for the required content group only, and cannot be used with any other <ContentGroup> in the final content group map.
  • 하나만 있습니다 <ContentGroup> .There's only one <ContentGroup>. 필수 파일의 그룹이 하나만 있어야 하므로 의도적인 것입니다.This is intentional, since there should be only one group of essential files.
  • 이 예제의 파일은 단일 .exe 파일입니다.The file in this example is a single .exe file. 필요한 콘텐츠 그룹은 한 파일에만 제한 되지 않으며 몇 개의 파일을 사용할 수 있습니다.A required content group isn't restricted to one file, there can be several.

이 파일을 작성 하는 쉬운 방법은 즐겨 찾는 텍스트 편집기에서 새 페이지를 열고, 응용 프로그램의 프로젝트 폴더에 파일을 빠르게 "다른 이름으로 저장" 하 고, 새로 만든 파일의 이름을로 설정 하는 것 SourceAppxContentGroupMap.xml 입니다.An easy way to get started writing this file is to open up a new page in your favorite text editor, do a quick "Save As" of your file to your app's project folder, and name your newly created file: SourceAppxContentGroupMap.xml.

중요

C + + 응용 프로그램을 개발 하는 경우의 파일 속성을 조정 해야 SourceAppxContentGroupMap.xml 합니다.If you are developing a C++ app, you will need to adjust the file properties of your SourceAppxContentGroupMap.xml. 속성을 Content true 로 설정 하 고 File Type 속성을 XML 파일로설정 합니다.Set the Content property to true and the File Type property to XML File.

를 만들 때 SourceAppxContentGroupMap.xml 파일 이름에 와일드 카드를 사용 하는 것이 도움이 됩니다. 자세한 내용은 와일드 카드 사용에 대 한 팁과 요령 섹션을 참조 하십시오.When you're creating the SourceAppxContentGroupMap.xml, it's helpful to take advantage of using wildcards in file names, for more info, see the Tips and tricks for using wildcards section.

Visual Studio를 사용 하 여 앱을 개발한 경우 필요한 콘텐츠 그룹에이를 포함 하는 것이 좋습니다.If you developed your app using Visual Studio, it's recommended that you include this in your required content group:

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

단일 와일드 카드 파일 이름을 추가 하면 응용 프로그램 실행 파일 또는 Dll과 같은 Visual Studio에서 프로젝트 디렉터리에 추가 되는 파일이 포함 됩니다.Adding the single wildcard file name will include files added to the project directory from Visual Studio, such as the app executable or DLLs. WinMetadata 및 Properties 폴더는 Visual Studio에서 생성 하는 다른 폴더를 포함 합니다.The WinMetadata and Properties folders are to include the other folders Visual Studio generates. 자산 와일드 카드는 앱을 설치 하는 데 필요한 로고 및 SplashScreen 이미지를 선택 하는 것입니다.The Assets wildcards are to select the Logo and SplashScreen images that are necessary for the app to be installed.

파일 구조의 루트에 있는 이중 와일드 카드 "* *"를 사용 하 여 프로젝트에 모든 파일을 포함할 수 없습니다 .이는 최종으로 변환 하려고 할 때 실패 하기 때문입니다 SourceAppxContentGroupMap.xml AppxContentGroupMap.xml .Note that you cannot use the double wild card, "**", at the root of the file structure to include every file in the project since this will fail when attempting to convert SourceAppxContentGroupMap.xml to the final AppxContentGroupMap.xml.

또한 공간 파일 (AppxManifest.xml, 라는, 따라서 appxsignature.p7x, 등)은 콘텐츠 그룹 맵에 포함 되지 않아야 합니다.It's also important to note that footprint files (AppxManifest.xml, AppxSignature.p7x, resources.pri, etc.) should not be included in the content group map. 지정 하는 와일드 카드 파일 이름 중 하나에 공간 파일이 포함 되어 있으면 무시 됩니다.If footprint files are included within one of the wildcard file names you specify, they will be ignored.

자동 콘텐츠 그룹Automatic content groups

자동 콘텐츠 그룹은 사용자가 이미 다운로드 한 콘텐츠 그룹과 상호 작용 하는 동안 백그라운드에서 다운로드 되는 자산입니다.Automatic content groups are the assets that are downloaded in the background while the user is interacting with the already downloaded content groups. 여기에는 앱을 시작 하는 데 필수적이 지 않은 추가 파일이 포함 됩니다.These contain any additional files that are not essential to launching the app. 예를 들어의 자동 콘텐츠 그룹을 여러 수준으로 분할 하 여 각 수준을 별도의 콘텐츠 그룹으로 정의할 수 있습니다.For example, you could break up automatic content groups in to different levels, defining each level as a separate content group. 필요한 콘텐츠 그룹 섹션에 설명 된 대로: .NET 네이티브 컴파일 때문에 모든 코드 (응용 프로그램 실행 파일)는 필요한 그룹의 일부 여야 하며, 자산 및 기타 파일은 자동 그룹에 남아 있습니다.As noted in the required content group section: due to .NET Native compilation, all code (the application executable) must be part of the required group, leaving assets and other files for the automatic groups.

이 예제의 자동 콘텐츠 그룹에 대해 좀 더 자세히 살펴보겠습니다 SourceAppxContentGroupMap.xml .Let's take a closer look at the automatic content group from our SourceAppxContentGroupMap.xml example:

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

자동 그룹의 레이아웃은 몇 가지 예외를 제외 하 고 필요한 그룹과 매우 유사 합니다.The layout of the automatic group is pretty similar to the required group, with a few exceptions:

  • 여러 콘텐츠 그룹이 있습니다.There are multiple content groups.
  • 자동 콘텐츠 그룹은 필요한 콘텐츠 그룹에 예약 된 "필수" 이름을 제외 하 고 고유한 이름을 가질 수 있습니다.Automatic content groups can have unique names except for the name "Required" which is reserved for the required content group.
  • 자동 콘텐츠 그룹은 필요한 콘텐츠 그룹 의 파일을 포함할 수 없습니다.Automatic content groups cannot contain any files from the required content group.
  • 자동 콘텐츠 그룹은 다른 자동 콘텐츠 그룹에도 있는 파일을 포함할 수 있습니다.An automatic content group can contain files that are also in other automatic content groups. 파일은 한 번만 다운로드 되며, 해당 파일을 포함 하는 첫 번째 자동 콘텐츠 그룹으로 다운로드 됩니다.The files will be downloaded only once, and will be downloaded with the first automatic content group that contains them.

와일드 카드 사용에 대 한 팁과 요령Tips and tricks for using wildcards

콘텐츠 그룹 맵에 대 한 파일 레이아웃은 항상 프로젝트 루트 폴더에 상대적입니다.The file layout for content group maps is always relative to your project root folder.

이 예제에서는 두 요소 모두에서 와일드 카드를 사용 <ContentGroup> 하 여 "Assets\Level2" 또는 "Assets\level3"의 한 파일 수준 내에 있는 모든 파일을 검색 합니다.In our example, wildcards are used within both <ContentGroup> elements to retrieve all files within one file level of "Assets\Level2" or "Assets\Level3." 더 깊은 폴더 구조를 사용 하는 경우 이중 와일드 카드를 사용할 수 있습니다.If you're using a deeper folder structure, you can use the double wildcard:

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

파일 이름에 텍스트와 함께 와일드 카드를 사용할 수도 있습니다.You can also use wildcards with text for file names. 예를 들어 "Level2"를 포함 하는 파일 이름을 사용 하 여 "자산" 폴더에 모든 파일을 포함 하려는 경우 다음과 같은 항목을 사용할 수 있습니다.For example, if you want to include every file in your "Assets" folder with a file name that contains "Level2" you can use something like this:

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

SourceAppxContentGroupMap.xml를 AppxContentGroupMap.xml으로 변환Convert SourceAppxContentGroupMap.xml to AppxContentGroupMap.xml

를 최종 버전으로 변환 하기 위해 SourceAppxContentGroupMap.xml AppxContentGroupMap.xml Visual Studio 2017 또는 MakeAppx.exe 명령줄 도구를 사용할 수 있습니다.To convert the SourceAppxContentGroupMap.xml to the final version, AppxContentGroupMap.xml, you can use Visual Studio 2017 or the MakeAppx.exe command line tool.

Visual Studio를 사용 하 여 콘텐츠 그룹 맵을 변환 하려면:To use Visual Studio to convert your content group map:

  1. 프로젝트 폴더에를 추가 합니다. SourceAppxContentGroupMap.xmlAdd the SourceAppxContentGroupMap.xml to your project folder
  2. 속성 창의 빌드 작업 SourceAppxContentGroupMap.xml 을 "AppxSourceContentGroupMap"로 변경 합니다.Change the Build Action of the SourceAppxContentGroupMap.xmlto "AppxSourceContentGroupMap" in the Properties window
  3. 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 단추로 클릭 합니다.Right click the project in the solution explorer
  4. 저장소로 이동-> 콘텐츠 그룹 맵 파일 변환Navigate to Store -> Convert Content Group Map File

Visual Studio에서 앱을 개발 하지 않았거나 명령줄을 사용 하는 것을 선호 하는 경우 MakeAppx.exe 도구를 사용 하 여를 변환 SourceAppxContentGroupMap.xml 합니다.If you didn't develop your app in Visual Studio, or if you just prefer using the command line, use the MakeAppx.exe tool to convert your SourceAppxContentGroupMap.xml.

간단한 MakeAppx.exe 명령은 다음과 같이 표시 될 수 있습니다.A simple MakeAppx.exe command might look something like this:

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

/S 옵션은에 대 한 경로를 지정 하 SourceAppxContentGroupMap.xml 고/f는의 경로를 지정 합니다 AppxContentGroupMap.xml .The /s option specifies the path to the SourceAppxContentGroupMap.xml, and /f specifies the path to the AppxContentGroupMap.xml. 마지막 옵션인/d는 파일 이름 와일드 카드를 확장 하는 데 사용 해야 하는 디렉터리를 지정 합니다 .이 경우에는 앱 프로젝트 디렉터리입니다.The final option, /d, specifies which directory should be used for expanding file name wildcards, in this case, its the app project directory.

MakeAppx.exe에서 사용할 수 있는 옵션에 대 한 자세한 내용을 보려면 명령 프롬프트를 열고 MakeAppx.exe 으로 이동한 후 다음을 입력 합니다.For more information about options you can use with MakeAppx.exe, open a command prompt, navigate to MakeAppx.exe and enter:

MakeAppx convertCGM /?

AppxContentGroupMap.xml앱에 대 한 최종 준비를 완료 해야 합니다.That's all you'll need to get your final AppxContentGroupMap.xml ready for your app! 앱이 Microsoft Store에 대해 완전히 준비 되기 전에 더 많은 작업을 수행 해야 합니다.There's still more to do before your app is fully ready for the Microsoft Store. 앱에 스트리밍 설치를 추가 하는 전체 과정에 대 한 자세한 내용은 이 블로그 게시물을 확인 하세요.For more information on the complete process of adding streaming install to your app, check out this blog post.