다음을 통해 공유


패키지 만들기(makepkg.exe)

앱 패키지 및 앱 패키지 메타데이터를 만듭니다.

makepkg 명령[/updcompat 3] [/pc] [/gameos <gameos file>] [/priorpackage <prior package file>] [/f <file name>] [/d <content directory>] [/pd <output directory>] [/l | /lk <secret_key.lekb>] [/contentid <ID>] [/productid <ProductIDGUID>] [/nocrashdump] [/resw <resw directory>] [/t <xml output directory>] [/v] [/?]

명령

genmap

대상 폴더의 내용을 기반으로 pack 명령과 함께 사용할 XML 파일을 빌드합니다. 생성된 파일은 단일 청크를 포함하며 필요에 따라 청크로 분할하거나 태그를 제공하도록 편집할 수 있습니다.

makepkg genmap /f <targetXmlFile> /d <contentdirectory>

genid

제품 ID GUID와 Store ID 간에 변환합니다. 생성된 GUID는 제품을 제출하는 동안 제공된 제품 ID와 일치합니다. 제품 ID GUID를 Store ID로 다시 변환할 수 있습니다.

makepkg genid /storeid <storeId> | /productid <productId>

pack

디스크의 파일에서 새 앱 패키지를 만듭니다.

makepkg pack /f <mapping file> /d <content directory> /pd <output package directory> /productid <ProductIDGUID> [/l | /lk <secret_key.lekb>]

매핑 파일 내에 지정된 파일을 추가하여 출력 패키지 디렉터리에 앱 패키지를 만듭니다. 예를 들어, a.txt, b.txt, game.exe의 세 파일이 있는 디렉터리의 내용을 패키징하기 위해 다음 매핑 파일이 사용됩니다.

<Package>
    <Chunk Id="1000" Marker="Launch">
        <FileGroup DestinationPath="\" SourcePath=".\" Include="a.txt"/>
        <FileGroup DestinationPath="\" SourcePath=".\" Include="b.txt"/>
        <FileGroup DestinationPath="\" SourcePath=".\" Include="game.exe"/>
    </Chunk>
</Package>

매핑 파일 스키마에 대한 설명은 배포 패키지 스키마를 참조하세요. 지정된 콘텐츠 디렉터리(/d)에는 MicrosoftGame.config라는 이름의 유효한 게임 구성 파일이 포함되어야 합니다. MicrosoftGame.config 파일은 앱의 Visual Studio 프로젝트의 빌드 출력 디렉터리에서 찾을 수 있습니다. 게임 구성 스키마에 대한 설명은 MicrosoftGame.config 스키마를 참조하세요.

기본적으로 makepkg pack 테스트 목적으로 모든 개발 키트에서 인식되는 잘 알려진 암호화 키(/lt 암호화 스위치라고도 함)를 사용하여 패키지를 암호화합니다. 이러한 패키지를 암호화로 보호된 것으로 간주하면 안 됩니다. 보안 업로드를 위해 패키지 파일을 보호하려면 /lk<로컬 EKB 파일> 스위치(콘솔 개발 및 제출에 권장) 또는 기본 동작을 재정의하는 /l 스위치를 사용합니다.

MakePkg.exe는 패키지에서 특정 파일을 검색하여 특수 등록 청크로 옮깁니다. 이러한 파일 중에는 MicrosoftGame.config, MicrosoftGame.config에서 참조된 이미지, 그리고 Resources.pri(존재하는 경우)가 있습니다.

참고:makepkg localize를 사용하여 Resources.pri 파일을 생성합니다. 보다 고급 시나리오는 패키지 리소스 인덱스 만들기(makepri.exe) 명령줄 도구에 대한 항목을 참조하세요.
이러한 파일을 포함하는 청크의 ID 속성을 "Registration"으로 지정하여 layout.xml 파일에 수동으로 배치할 수 있습니다.

참고: Makepkg는 실행 파일 섹션 내의 재배치가 포함된 이진을 거부합니다. 이러한 재배치는 로드 시 실행 파일 섹션을 수정해야 하며, 이때 코드 수정이 필요할 수 있습니다. 따라서 이러한 특성을 가진 이진이 있으면 makepkg는 실패합니다. 이 문제를 방지하는 일반적인 방법은 이진을 컴파일할 때 읽기 전용 데이터 섹션을 다른 실행 파일 섹션으로 병합하지 않는 것입니다.

validate

패키지를 빌드하지 않고 유효성 검사 단계를 실행합니다. 패키지 제출 시 발생할 수 있는 문제를 문서화하는 로그 파일을 만드는 제출 유효성 검사 도구 실행 단계가 포함됩니다. 선택적 mapfile을 제외하고, makepkg pack 명령이 받는 것과 동일한 매개 변수를 받습니다.

makepkg validate [options] [/f <mapfile>] /d <sourcedir> /pd <destinationdir>

지역화

콘텐츠 디렉터리의 PNG 및 RESW 파일에서 Resources.pri 파일을 생성합니다. 지역화된 정보를 검색하려면 디렉터리에 MicrosoftGame.config 파일이 있어야 합니다. 이 파일은 셸 지역화를 위한 언어 정의 및 이미지 파일을 지정해야 합니다. 결과 Resources.pri는 출력 디렉터리가 제공된 경우 출력 디렉터리의 루트에 배치되고, 출력 디렉터리가 제공되지 않은 경우 콘텐츠 디렉터리에 배치됩니다. 임시 디렉터리가 제공된다면, 수동 유효성 검사를 위해 해당 임시 디렉터리에 Resources.pri 파일의 XML 변환이 생성됩니다. Resources.pri 파일 사용에 대한 자세한 내용은 MicrosoftGame.config 지역화를 참조하세요.

makepkg localize [/d <content directory>] /pd <destinationdir> /resw <resw directory> /t <xml output directory> /gc <game config path>

genkey

로컬 에스크로 키 blob(LEKB)를 생성합니다. 임의 콘텐츠 키가 생성되어 LEKB 파일에 저장됩니다.

생성된 LEKB는 makepkg pack /lk 암호화 스위치와 함께 사용할 수 있습니다. 일반적으로 원하는 모든 신뢰 경계에 대해 genkey를 사용합니다. 예를 들어 genkey를 한 번 사용하고 스튜디오 전체에서 하나의 키를 사용하거나 패키지에 액세스할 수 있는 사용자에 따라 제품당 하나의 키를 사용할 수 있습니다.

LEKB를 생성하려면 다음을 수행합니다.

makepkg genkey /ekb <The path to save the generated LEKB file.>

/lk 암호화 스위치를 사용하여 LEKB를 사용하여 패키지를 암호화하려면 다음을 수행합니다.

makepkg pack /lk <The path to your LEKB file created by the genkey command.>

LEKB 파일은 패키지를 만드는 동안 안정적인 암호화 키(/lk 암호화)를 사용하기 위한 makepkg 팩에 대한 옵션으로 제공되어야 합니다. 여기에는 다음과 같은 4가지 주요 이점이 있습니다.

  1. packageutil 비교는 /l과 달리 올바른 업데이트 크기 추정치를 생성할 수 있습니다.
  2. 이 기능을 사용하면 콘솔과 PC가 콘텐츠 업데이트를 다운로드하는 데 사용하는 것과 동일한 알고리즘을 사용하여 파트너 센터에 델타 업로드를 안전하게 수행할 수 있습니다. (/l와는 달리)
  3. (/l와(과) 달리) 개발 키트에 설치할 수 있습니다.
  4. (/lt와(와) 달리) 보안 암호화 키 자료를 사용하며 특정 환경에서만 암호를 해독할 수 있습니다.

LEKB 파일의 내용은 약간 난독화됩니다. LEKB 파일에 대한 액세스를 보호하여 콘텐츠 패키지의 보안을 보장하는 것은 사용자의 책임입니다. LEKB 파일과 makepkg 팩에서 출력한 콘텐츠 패키지 파일을 소유한 사용자는 누구나 해당 콘텐츠를 해독할 수 있습니다.

참고:: genkey에서 만든 로컬 EKB 파일의 확장명 .lekb은(는) makepkg pack에서 생성된 .ekb 파일과 "l"이 "로컬로 생성됨"으로 구분하는 것이 좋습니다.

옵션

옵션 설명
/validationpath SubmissionValidator.dll을 로드하는 데 사용할 경로를 지정합니다. 이 값을 지정하지 않으면 SubmissionValidator.dll이 MakePkg.exe와 동일한 디렉터리에서 로드됩니다.
/updcompat 3 pack 명령과 함께 사용됩니다. 지원되는 값은 하위 파일 내용 업데이트 세분성을 사용하는 3 하나뿐입니다.
/pc pack 명령과 함께 사용됩니다. PC 퍼블리싱을 목표로 하는 MSIXVC 패키지임을 나타내는 선택적 매개 변수입니다. 이 플래그로 만든 패키지는 Xbox 본체가 아닌 Windows 10 PC에만 배포, 테스트 또는 퍼블리싱할 수 있습니다.
/priorpackage <이전 패키지 파일> pack 명령과 함께 사용됩니다. 하위 파일 콘텐츠 업데이트 최적화에 사용하는 이전 패키지 파일을 지정하는 선택적 매개 변수입니다. /updcompat 3를 의미합니다.
/gameos <Game OS 파일> pack 명령과 함께 사용됩니다. 패키지에 포함할 Game OS 파일을 지정하는 선택적 매개 변수입니다. 이 매개 변수를 사용하지 않거나 Game OS 파일을 지정하지 않으면, 레이아웃 디렉터리의 실행 파일 옆에 GameOs.xvd 파일이 있어야 합니다.
/storeid <storeId> genid 명령과 함께 사용됩니다. 사용할 Store ID를 지정합니다.
/f <파일 이름> 입력 파일을 지정합니다. pack 또는 validate 명령과 함께 사용하면, 이는 매핑 파일을 지정합니다. appdata와 함께 사용하면, 이는 애플리케이션 매니페스트 파일을 지정합니다.
/d <콘텐츠 디렉터리> 콘텐츠 디렉터리를 지정합니다. 지정된 디렉터리(예: 프로젝트의 layout\image\loose 디렉터리)에는 올바른 MicrosoftGame.config 파일이 있어야 합니다.
/pd <출력 디렉터리> 출력 디렉터리를 지정합니다.
/lk <lekbfile> 지정된 ekb 파일을 사용하여 콘텐츠 라이선스로 패키지를 암호화합니다. 자세한 내용은 genkey 명령을 참조하세요.
기본적으로 makepkg pack은 테스트 목적으로 모든 Debkit에 의해 인식된 잘 알려진 암호화 키를 사용하여 패키지를 암호화합니다. /lk/l 스위치는 모두 기본 동작을 재정의합니다.

참고: 인증을 위해 패키지를 제출할 때 인증 팀이 다른 방식으로 요청하지 않는 한 /l 또는 /lk을 사용해야 합니다.
/l 고유한 콘텐츠 라이선스로 패키지를 암호화합니다. pack 명령과 함께 사용됩니다.
기본적으로 makepkg pack은 테스트 목적으로 모든 Debkit에 의해 인식된 잘 알려진 암호화 키를 사용하여 패키지를 암호화합니다. /lk/l 스위치는 모두 기본 동작을 재정의합니다.

참고: 인증을 위해 패키지를 제출할 때 인증 팀이 다른 방식으로 요청하지 않는 한 /l 또는 /lk을 사용해야 합니다.
/contentid <ID> 이 패키지가 속한 콘텐츠 ID를 지정하는 선택적 매개 변수입니다. ID는 GUID입니다. 이 매개 변수가 없거나 00000000-0000-0000-0000-000000000000 값으로 지정하면 패키지 제품군 이름 기반의 안정적인 GUID가 사용됩니다. 제출할 빌드를 준비할 때는 이 매개 변수가 필요하지 않습니다. pack 명령과 함께 사용됩니다. 이 옵션을 지정하지 않거나 게임 제품마다 다른 makepkg 호출에서 이 옵션을 동일하게 유지하여 packageutil 비교 유틸리티를 통해 업데이트 크기를 계산하는 것이 좋습니다.
/productid <ProductIDGUID> 이 패키지가 속한 제품 ID를 지정하는 선택적 매개 변수입니다. ID는 GUID입니다. 이 매개 변수가 없으면 GUID는 00000000-0000-0000-0000-000000000000이 됩니다. 이 매개 변수는 제출을 위한 빌드를 준비할 때는 필요하지 않습니다. packgenid 명령과 함께 사용됩니다. ProductID는 구운 디스크로 설치된 DLC 패키지를 열거하거나 시스템이 오프라인으로 실행될 때 포함되어야 합니다.
/symbolpaths 기호 번들링 중에 기호 확인 조회를 위한 추가 경로를 지정합니다. 경로는 세미콜론으로 구분된 목록으로 지정해야 합니다.
/skipsymbolbundling 기호 번들링 단계를 건너뛰도록 지정합니다. 이 플래그는 사용하지 않는 것이 좋습니다.
/skipvalidation 유효성 검사 단계를 건너뛰도록 지정합니다. 이 플래그를 사용할 때는 제출 유효성 검사 도구 로그 파일이 생성되지 않습니다. 인증을 위해 제출할 수 있는 빌드에는 이 플래그를 사용하지 않는 것이 좋지만, 로컬 반복 시간을 단축할 수는 있습니다.
/validationcritical 제출 유효성 검사 도구의 오류가 MakePkg 프로세스의 중요한 오류로 취급되도록 지정합니다.
/validationlanguage 제출 유효성 검사기 로그 파일을 빌드하기 위한 추가 언어를 지정합니다. 이 언어는 BCP-47 형식으로 지정해야 하며 문자열 리소스를 사용할 수 있는 경우 이 대상 언어로 두 번째 로그 파일이 생성됩니다. 현재 지원되는 언어는 일본어(ja-JP), 한국어(ko-KR) 및 중국어 간체(zh-CN)입니다.
/t localize 명령과 함께 사용합니다. Resources.pri 내용을 XML 형식으로 변환하기 위한 선택적 디렉터리입니다. Resources.pri 내용을 XML 형식으로 보면 Resources.pri 내용이 예상대로인지 확인하는 데 편리합니다.
/resw localize 명령과 함께 사용합니다. 직접 루트 디렉터리에 없는 경우 RESW 파일이 포함된 루트 디렉터리를 기준으로 하는 선택적 디렉터리 경로입니다.
/gc localize 명령과 함께 사용합니다. 콘텐츠 디렉터리의 기본 위치에 없거나 MicrosoftGame.config 이외의 이름이 있는 경우 MicrosoftGame.config 파일의 선택적 경로입니다.
/v 본체에 자세한 정보가 출력되도록 합니다.
/loggable 로그 파일에 쓰는 데 적합하지 않은 제어 문자가 포함된 결과를 표시하지 않습니다. 예를 들어 복사 진행 상황은 자세한 정보 표시 모드가 아닌 모드에서 연속 백분율을 사용하는데, 이 모드는 로그 파일의 크기를 지나치게 늘릴 수 있습니다.
/? 도움말을 표시합니다.

설명

makepkg pack이 실행되는 경우 XVC(Xbox 가상 컨테이너)라 하는 이진 패키지 파일이 생성됩니다. 본체용 XVC는 파일 확장명이. xvc이고, PC용 파일 확장명은. msixvc입니다. 확장자 차이 외에도 Xbox One 제품군(_x)과 Xbox Series X|S 제품군(_xs) 패키지를 구분하기 위해 패키지 이름에 접미사가 추가되었습니다.

makepkg pack 또는 makepkg validate가 실행되면 일련의 검증 테스트가 수행됩니다. 이러한 테스트에 걸리는 시간은 타이틀 크기와 파일 수에 따라 다릅니다.

검증 테스트의 결과는 앱 패키지 출력에 사용된 동일한 출력 디렉터리의 XML 파일에 기록됩니다. 로그에는 타이틀이 유효성 검사를 통과하기 위해 수정해야 하는 모든 오류가 나열됩니다. 유효성 검사는 과거에 타이틀 출시가 지연되거나 나중에 마스터링 및 인증 프로세스에서 거부되도록 한 일반적인 오류를 검사합니다.

makepkg 다음 종료 코드를 설정합니다.

종료 코드

설명

0성공
1잘못된 환경 : 커널 드라이버가 설치되지 않았습니다. 관리자 권한 명령 프롬프트에서 실행 중이지 않습니다.
2잘못된 명령줄
3출력을 빌드하지 못했습니다.

더 광범위한 정보도 stderr에 기록됩니다.

참고 항목

배포 패키지 스키마

패키지 리소스 인덱스 만들기(makepri.exe)

MicrosoftGame.config