소개
MakePkg.exe는 XBOX Virtual Container(XVC)라고 하는 바이너리 패키지 파일에 콘텐츠를 배치하는 도구입니다. 콘솔용 패키지는 파일 이름 확장자가 .xvc이고 PC용 패키지는 파일 이름 확장자가 .msixvc입니다. 확장자 차이 외에 XBOX One Family(_x)와 XBOX Series X|S Family(_xs) 패키지를 구분하기 위해 패키지 이름에 접미사가 추가됩니다. MakePkg.exe는 잘 알려진 테스트 키, 무작위로 생성된 키 또는 암호화에 안전한 안정 키 중 하나를 사용하여 암호화된 패키지를 생성하기 위해 타이틀의 콘텐츠와 매핑 파일을 입력으로 사용합니다. 암호화에 사용되는 키는 패키지가 로컬 테스트용인지 게시를 위해 Microsoft에 제출하기 위한 것인지에 따라 달라집니다. 다음 섹션에서는 사용 사례를 자세히 설명합니다. 매핑 파일의 XML은 두 가지 목적으로 사용됩니다. 첫째, 런타임에 타이틀에 사용 가능한 파일의 위치를 지정합니다. 둘째, 각 파일이 속한 청크 파일을 지정합니다. launch 세트라고 알려진 청크 세트는 타이틀 실행이 허용되기 전에 항상 설치됩니다. 나머지 청크는 타이틀이 실행되는 동안 설치됩니다. 청크 설치 진행 상황을 쿼리하고 아직 설치되지 않은 청크의 설치 순서를 수정하기 위한 API를 사용할 수 있습니다. 이 문서에는 다음이 포함됩니다.패키징 중 단계
MakePkg 패키징 프로세스는 여러 단계를 포함합니다.MicrosoftGame.config 및 파일 존재 확인
makepkg 명령은 콘텐츠 소스 디렉터리의 MicrosoftGame.config 파일이 유효하고 설치될 수 있는지 확인합니다.
makepkg pack 명령을 실행하면 MicrosoftGame.config에서 참조되는 파일이 소스 디렉터리에 있는지 확인합니다. 이러한 파일이 launch 세트를 위한 패키지에 포함되어 있는지 검증합니다. 이 검증에는 바이너리, 이미지 파일 및 기타 모든 리소스가 포함됩니다.
바이너리 서명
XBOX Code Integrity(XCI)는 타이틀의 파일을 스캔하고 서명합니다. 이 프로세스의 일환으로 파일에서 감지된 PE 헤더를 패키지 파일에 쓰기 전에 수정합니다. 서명이 실패하면 오류 메시지가 보고됩니다. 메시지에는 서명 실패에 대한 더 많은 세부 정보를 수집하기 위해 xcihash.exe를 수동으로 다시 실행하는 명령이 포함됩니다.패키지 생성
MakePkg가 사전 검증 단계를 완료하는 즉시 패키지 파일을 생성합니다. 그런 다음 MakePkg는 XML 맵 파일에 지정된 청크에서 서명된 실행 파일을 포함한 소스 파일을 패키지 파일에 복사합니다.콘솔 전용: 패키지 생성의 마지막 단계는 Game OS 파일(GameOs.xvd)을 임베딩하는 것입니다. 이 파일은 Microsoft Game Development Kit(GDK)의 일부이며 게임의 실행 파일 옆의 레이아웃 디렉터리에 있어야 합니다.
/gameos 플래그는 Game OS 파일에 대한 대체 소스 위치를 지정합니다.암호화
테스트 서명(기본 암호화)
기본 MakePkg 동작은 테스트 서명된 패키지를 만드는 것이며,makepkg pack을 호출할 때 /lt 스위치를 사용해도 나타납니다. 테스트 서명은 XBOX 및 PC에서 실행하기 위한 성능 테스트 검증을 위해 잘 알려진 테스트 암호화 키를 사용하여 생성된 패키지 파일을 암호화합니다. 실시간 패키지 복호화의 효과가 타이틀에 투명하도록 설계되었지만, 이는 인증 및 타이틀의 최종 게시 전에 암호화로 인한 성능 문제가 발견되도록 보장합니다. 테스트 서명된 패키지는 암호화가 고정 키를 사용하기 때문에 콘텐츠를 암호적으로 보호하기 위한 것이 아닙니다. 테스트 서명된 패키지는 xbapp install을 사용하여 개발 킷에, wdapp install을 사용하여 개발 PC에 설치할 수 있습니다.
무작위 키 암호화(/l 스위치)
MakePkg /l 스위치는 무작위로 생성된 암호화 키로 패키지 파일을 암호화합니다. 타이틀 패키지 외에도 MakePkg /l은 PackageFullName_licenseName_GUID.EKB 형식의 이름을 가진 파일을 방출합니다. (밑줄(_) 문자 사용에 유의하세요.) /l 스위치로 생성된 패키지는 개발 킷이나 개발 PC에 설치할 수 없습니다. 타이틀이 모든 확인과 사전 제출 테스트를 통과할 때까지 테스트 서명된 패키지를 사용하여 타이틀을 테스트해야 합니다. 그 상태에 도달한 후 Microsoft에 최종 제출하기 전에 /l 스위치로 MakePkg를 실행합니다.
권장 - 안정 키 암호화(Genkey + /lk 스위치)
Makepkg/lk 스위치는 makepkg genkey 명령으로 만든 안정된(항상 동일한) 키로 패키지를 암호화합니다. 타이틀 패키지 외에도 makepkg /lk는 PackageFullName_licenseName_GUID.EKB 및 PackageFullName_licenseName_GUID.CEKB 형식의 이름을 가진 파일을 방출합니다. (밑줄(_) 문자 사용에 유의하세요.) /lk 스위치로 생성된 패키지는 개발 킷에는 설치할 수 있지만 개발 PC에는 설치할 수 없습니다. PC의 경우 타이틀이 모든 확인과 사전 제출 테스트를 통과할 때까지 테스트 서명된 패키지를 사용하여 타이틀을 테스트해야 합니다.
다음과 같은 이점 때문에 이것이 개발 킷 테스트 및 제출에 대한 권장 암호화 모드입니다.
- packageutil compare가 (/l과 달리) 올바른 업데이트 크기 예상을 생성할 수 있습니다.
- 콘솔과 PC가 콘텐츠 업데이트를 다운로드하는 데 사용하는 것과 동일한 알고리즘을 사용하여 Partner Center에 대한 안전한 델타 업로드를 가능하게 합니다.
- (
/l과 달리) devkit에 설치할 수 있습니다. - (
/lt와 달리) 안전한 암호화 키 자료를 사용하며 특정 환경에서만 복호화될 수 있습니다.
/lt 및 /l 암호화 모드와 달리 /lk 모드는 사용을 위해 한 번만 수행하는 추가 단계가 필요합니다.
- 한 번만:
makepkg genkey /ekb SECRET_KEY.lekb를 실행하여 SECRET_KEY.lekb 파일을 만듭니다. 이는 패키지를 암호화하는 안정적인 콘텐츠 키를 저장하는 Local Escrowed Key Blob(LEKB)입니다. 필요한 경우에만 액세스할 수 있는 안전한 위치에 저장해야 합니다. 이상적인 설정에서는 공식 빌드 컴퓨터/계정만 액세스할 수 있어야 합니다. - 패키지 생성:
makepkg pack /lk SECRET_KEY.lekb ...를 실행합니다. 이는 SECRET_KEY.lekb 파일에 저장된 키를 사용하여 암호화된 패키지를 만듭니다. - 패키지 업로드: XVC 및 EKB 파일이 일반적으로 Partner Center에 업로드됩니다. LEKB 및 CEKB 파일은 업로드되지 않습니다.
xbapp install은 XBOX devkit에 패키지를 로드하는 데 필요한 CEKB 파일을 자동으로 설치합니다. 도구 기반 설치(게임 디스크, 외부 저장소, 콘솔 간 전송) 이외의 설치 시나리오를 테스트하는 경우 xbapp installkey 명령을 사용하여 CEKB 파일만 설치하세요.
그 콘텐츠를 복호화할 수 있습니다.
자신의 devkit에 패키지를 설치할 수 있고, 패키지를 시작할 수 있으며, 패키지에서 xbcp로 파일을 꺼낼 수 있습니다.
제출 검증
MakePkg는 패키지를 만든 후 타이틀 파일에 대해 Submission Validator(SubmissionValidator.dll)를 자동으로 실행합니다. Submission Validator의 목표는 나중에 Microsoft에서의 수집, 제출 또는 인증 프로세스에서, 또는 향후 콘텐츠 업데이트에서 타이틀에 문제를 일으킬 수 있는 오류와 문제를 확인하는 것입니다. Partner Center에 업로드할 서명된 패키지를 생성하기 전에 감지된 모든 문제를 수정해야 합니다. 제출 검증 프로세스는 실패의 성격과 위치를 자세히 설명하는 XML 로그 파일을 생성합니다. 프로세스는 이 로그 파일을 MakePkg의/pd 매개변수로 지정된 패키지 파일 출력 위치와 동일한 위치에 씁니다. 이 로그에는 실패나 경고가 포함될 수 있습니다. Microsoft에 패키지를 제출하기 전에 실패를 해결해야 합니다. 타이틀이 정책 및 XBOX Requirements(XR) 지침을 준수하도록 경고를 해결하는 것을 고려하세요.
패키지를 Partner Center에 업로드하고 수집 프로세스를 위해 제출하면 검증 확인이 다시 실행됩니다. 이 프로세스는 타이틀이 Submission Validator의 최신 버전을 사용하여 확인되고 문제가 가능한 한 빨리 감지되도록 보장합니다.
제출 검증 테스트
Microsoft가 새로운 문제를 식별함에 따라 특정 테스트는 시간이 지나면서 진화합니다. Submission Validator 확인을 통과했다는 것은 수집 및 인증 프로세스 중에 타이틀 제출에 다른 문제가 발생하지 않는다는 것을 나타내는 것으로 해석되어서는 안 됩니다. 오히려 그 의도는 단순히 예측 가능한 오류로 인한 거부의 시간과 비용을 줄이는 것입니다. 또한 Submission Validator는 특정 보안 관련 문제를 확인할 수 있지만, 타이틀에 대한 보안 테스트로 간주되어서는 안 됩니다.
XBOX Game Developer(XGD) 사이트에서 최신 버전의 Submission Validator를 다운로드할 수 있습니다. 도구는 XBOX One Software Development Kit 릴리스와 다른 속도로 진화할 수 있으므로 제출 프로세스에서 검증 실패로 인한 거부를 피하기 위해 최신 버전을 사용하고 있는지 확인하세요. 최신 버전을 얻으려면 XBOX Developer Downloads->XBOX One->Submission Validator를 참조하세요.
Submission Validator에 대한 자세한 내용은 GDK 문서의 Submission Validator(SubmissionValidator.dll)를 참조하세요.
검증 프로세스에 대한 질문이 있는 경우 Microsoft 계정 담당자에게 문의하세요.
개발 중 패키징 권장 단계
개발 중에 패키지를 만들려면 다음 단계를 사용하세요. PC를 대상으로 할 때는xbapp 대신 wdapp을 사용하세요.
- 개발 PC에서 테스트 서명된 패키지와 xbapp install을 사용하여 로컬로 반복합니다. MakePkg.exe pack /f Mapfile /d LooseContentDir /pd OutputFolder 시작하려면 XBOX Developer Downloads를 참조하세요.
- 셸에서 실행하거나 xbapp launch를 사용하여 타이틀을 실행합니다. xbapp install local-XVC-path 또는 xbapp install http-URI 스트리밍 설치의 다른 옵션을 테스트하려면 이 문서의 뒷부분에 있는 스트리밍 설치 패키지 테스트를 참조하세요.
- 루트 폴더에서 Blu-ray Disc에 구운 테스트 서명된 패키지를 사용하여 광학 드라이브에서의 타이틀 설치를 테스트합니다. XBOX 개발 킷에 디스크를 삽입한 후 다음 명령을 실행합니다. xbapp install XO:\XVC-file-name
-
테스트 서명된 패키지와 동일한 패키징 명령을 사용하되
/l플래그를 추가하여 최종 제출을 준비합니다.
스트리밍 설치 패키지 테스트(PC)
wdapp 명령을 사용하여 테스트 PC에 패키지를 설치합니다.
현재 테스트 MSIXVC 패키지는 테스트 PC의 물리 드라이브나 웹 서버에 있어야 합니다. 향후 업데이트에서는 UNC(Universal Naming Convention) 공유에서 설치가 추가될 것입니다.
스트리밍 설치 패키지 테스트(콘솔)
테스트 서명된 스트리밍 설치 패키지의 설치를 네 가지 방법으로 테스트할 수 있습니다.개발 PC에서 스트리밍
개발 PC에서 스트리밍은 처리량 제한을 지원하지 않습니다. 설치 속도는 개발 PC의 프로세서와 I/O 특성뿐만 아니라 개발 PC와 개발 킷 사이의 네트워크 연결 대역폭에 따라 달라집니다. 기계식 하드 드라이브가 있는 현대의 개발 PC에서 기가비트 이더넷 연결을 통해 300Mbps(약 36MiB/s) 이상의 속도를 기대할 수 있습니다. xbapp install dev-pc-path-to-XVC 명령줄을 통한 설치 XBOX Manager를 통한 설치웹 서버에서 패키지 호스팅
웹 서버가 대역폭 제한 구성을 지원하는 경우, 웹 서버에서 패키지를 호스팅하면 다양한 네트워크 전송 속도를 시뮬레이션할 수 있습니다. XBOX One 플랫폼은 연결 실패 및 재시도 로직을 처리합니다. 타이틀은 속도를 제외하고 광학 디스크에서 설치할 때와 인터넷 소스에서 설치할 때 동일하게 실행되어야 합니다. xbapp install http-URI-to-package 명령줄을 통한 설치 XBOX Manager를 통한 설치패키지를 디스크에 구운 다음 명령줄에서 설치
XVC가 루트 디렉터리에 있는 광학 디스크를 굽고 다음 명령을 사용하여 패키지를 설치합니다. xbapp install XO:\XVC-file-name패키지를 디스크에 구운 다음 셸을 통해 설치
패키지가 포함된 MSXC라는 이름의 폴더가 있는 광학 디스크를 굽습니다. 실행 중인 개발 킷에 디스크를 삽입합니다. 셸이 자동으로 타이틀 설치를 시작하고, 개발 킷은 launch 세트가 설치된 후 알림을 표시하며 타이틀을 실행할 수 있게 됩니다.모범 사례
하위 파일 콘텐츠 업데이트 사용
콘텐츠 업데이트 크기를 줄이는 하위 파일 콘텐츠 업데이트를 사용하세요. 향후 최적의 콘텐츠 업데이트를 보장하도록 패키지 레이아웃을 작성하세요. 최적의 업데이트를 위한 패키지 작성에 대한 자세한 내용은 콘텐츠 업데이트 모범 사례를 참조하세요.XBOX Requirement 034(XR-034: Streaming Install Initial Play Marker)
초기 플레이어 마커를 포함하는 것은 선택 사항이지만 강력히 권장됩니다. 이를 통해 사용자는 타이틀이 완전히 설치되기 전에 백그라운드에서 설치가 계속되는 동안 타이틀을 실행할 수 있습니다. XR-034: Streaming Install Initial Player Marker에 따라, Initial Play Marker를 포함하는 타이틀은 초기 플레이 마커에서 실행될 때 게임 플레이 경험을 제공해야 합니다.타이틀 테스트
타이틀을 다양한 소스에서 다양한 속도로 설치하는 동안 테스트하세요.최신 Submission Validator 사용
항상 Submission Validator의 최신 버전을 사용하세요. Submission Validator의 최신 버전은 XBOX Developer Downloads->XBOX One->Submission Validator에서 사용할 수 있습니다.열린 데이터 연결로 인한 패키징 실패
xbapp install /w를 사용하여 패키지를 설치하거나 XBOX Manager가 Keep data connection open 옵션을 활성화한 상태로 패키지를 설치할 때(Intelligent Delivery 및 온디맨드 청크 시나리오에 사용), 설치가 완료된 후에도 콘솔과 PC의 패키지 파일 사이의 데이터 파이프가 계속 열려 있습니다. 이 열린 연결은 패키지 파일을 잠급니다.
이 파이프가 열려 있는 동안 타이틀을 다시 빌드하거나 다시 패키징하려고 하면, makepkg는 잠긴 패키지 파일에 쓸 수 없어 공유 위반으로 실패합니다.
이 문제를 해결하려면 다시 빌드하기 전에 열린 데이터 연결을 닫으세요.
- XBOX Manager: XBOX Manager 앱에서 설치된 패키지를 찾아 Keep data connection open 옵션을 선택 취소하거나, 그 옵션을 활성화하지 않고 패키지를 제거하고 다시 설치합니다.
- xbapp install: 설치 후 파이프를 열어 둘 필요가 없을 때는
/w플래그를 생략하세요./w는 개발 테스트 중에 타이틀이 런타임에 추가 청크를 요청해야 할 때만 사용하세요. - XBOX Manager 닫기: XBOX Manager를 완전히 닫으면 패키지 파일에 대해 열린 파일 핸들이 해제됩니다.
리소스 및 지침
자세한 내용은 다음 문서를 참조하세요.- System > Overviews > Streaming Installation 및 Intelligent Delivery 개요
- System > Overviews > Streaming Installation > 청크의 동적 재정렬
- System > Overviews > Streaming Installation > 스트리밍 설치: 상태
- Test, Automation, and Publishing > Tools > Streaming Installation > 배포 패키지 스키마
- Test, Automation, and Publishing > Tools > Streaming Installation > Make Package(makepkg.exe)
