다음을 통해 공유


MSIXVC 패키징 도구를 사용하여 PC용 타이틀의 패키징 시작

다음 단계를 사용하여 대상 테스트 개발 PC에서 테스트를 위해 사이드로드할 수 있는 MSIXVC 패키지를 만든 다음, 퍼블리싱을 위해 파트너 센터에 제출합니다.

Windows 10 버전 최소 요건 확인

MSIXVC 기반 패키지의 배포 테스트에는 Windows 10 버전 18362 이상이 필요합니다.

패키징 요건 평가

패키지에 다음 속성이나 다음 기능 중 하나가 필요하면 이 항목의 뒷부분에 있는 다른 패키지 고려 사항과 고급 기능 섹션을 참조하세요.

  • 프레임워크 패키지 종속 요소
    앱이 재배포 가능 소프트웨어를 사용할 경우 이러한 많은 사전 요건의 Microsoft의 사전 패키지 버전을 사용할 수 있습니다. 이는 종속 요소로 선언하고 자동으로 설치할 수 있습니다.

  • 사용자 지정 설치 작업
    앱이 프레임워크 패키지가 없는 재배포 가능 소프트웨어를 사용할 경우 이러한 종속 요소를 연계 설치할 수 있습니다.

콘텐츠 준비

타이틀에 있는 모든 소스 자료를 한 디렉터리에 배치합니다. MSIXVC 패키징 시스템과 호환되지 않는 파일이나 소매 패키지의 배송에 적합하지 않은 파일은 제거해야 합니다.

  • PDB 파일.

  • UWP(유니버설 Windows 플랫폼) 및 Appx "풋프린트" 파일(AppxSignature.p7x 및 AppxBlockMap.xml 포함).
    이전에 Microsoft Store에서 UWP로 전송된 경우 Appx 또는 MSIX 패키지와 관련된 파일 중 일부가 있을 수 있으므로 제거해야 합니다.

  • 다른 PC 게임 스토어에 대한 모든 참조: 자산, 이진 등.

파트너 센터에서 제품 ID 얻기

Microsoft 담당자에게 연락하여 파트너 센터에서 제품을 만듭니다. 이는 퍼블리셔 ID와 패키지 이름을 알아야 하는 다음 단계를 위한 필수 조건입니다. 이 단계에 대한 자세한 내용은 다른 항목에서 설명하며, Microsoft 담당자의 도움이 필요할 수도 있습니다.

루트 폴더에서 MicrosoftGame.config.xml 파일 만들기 및 나머지 게임 콘텐츠 만들기

MicrosoftGame.config xml 파일 샘플은 이 항목의 뒷부분에 포함되어 있습니다. 이는 .config 파일 생성을 간소화하고 파트너 센터 프로젝트의 ID 및 이름 값을 자동으로 동기화하는 MicrosoftGame.config 편집기 사용과 함께 참고자료로 사용할 수 있습니다.

모든 Visual C/C++ 런타임 종속 요소 식별

패키지의 모든 Visual C/C++ 런타임 종속 요소를 파악합니다. 이러한 종속 요소가 MicrosoftGame.config에 종속 요소로 나열되거나 패키지 페이로드에 명시적으로 복사되었는지 확인하는 것이 좋습니다. 자세한 내용은 프레임워크 패키지 종속성을 참조하세요.

셸 및 Microsoft Store 패키지에 표시할 아이콘 만들기

다음 MicrosoftGame.config 샘플에 나열된 각 이미지에 해당하는 파일을 지정된 크기에 맞게 조정한 후 게임의 루트 폴더에 넣습니다. 또는 이미지 자산을 하위 디렉터리에 배치할 수 있습니다. 이때 ShellVisuals 아이콘 경로가 일치하도록 조정해야 합니다. MicrosoftGame.config 편집기는 단일 원본 이미지를 입력으로 사용하여 이러한 이미지를 생성하는 기능을 제공합니다.

MakePkg.exe 패키징 도구가 포함된 Microsoft 게임 개발 키트 설치

Microsoft GDK(게임 개발 키트) 명령 프롬프트는 기본값으로 다음 폴더에 있습니다.
C:\Program Files (x86)\Microsoft GSDK\Command Prompts

패키징 레이아웃 매핑 파일을 만들기

단일 폴더에 모든 게임 콘텐츠가 포함된 폴더에서 Microsoft GDK(게임 개발 키트) 명령 프롬프트를 열고 다음 명령을 실행합니다.

MakePkg genmap /f layout.xml /d <Your_game_folder>

이렇게 하면 패키지 단계 중 사용되는 layout.xml이라는 파일이 만들어집니다(다른 이름을 사용할 수 있음). 패키징 도구에 대한 자세한 내용은 패키지 만들기(makepkg.exe)를 참조하세요.

지능형 전송을 사용하여 설치 크기를 줄이는 방법을 파악

layout.xml 파일에서 콘텐츠를 태그 지정하여 설치 크기를 줄이는 방법을 알아보려면 지능형 전송 개요를 참조하세요. 기본적으로 설치하지 않지만 게임에서 필요할 때 다운로드해야 하는 지역화된 자산이나 콘텐츠가 많다면 지능형 전송을 고려해 보세요.

패키지 만들기

다음 명령을 사용하여 패키지를 만듭니다.

MakePkg pack /f layout.xml /lt /d <Your_game_folder_name> /nogameos /pc /pd <Output_Folder_Name>

라이선스 종속적인 시나리오의 경우(예: 인게임 스토어, 평가판 등) 실제 콘텐츠 ID로 MakePkg해야 합니다. 이 실제 콘텐츠 ID는 이 패키지를 파트너 센터에서 처음 수집될 때 생성되며, 패키지 페이지에서 제출된 패키지의 세부 정보에서 확인할 수 있습니다.

대상 PC에서 개발자 모드 활성화

  1. 설정을 엽니다.

  2. 검색 필드에 개발자를 입력합니다. 표시된 옵션 중에서 개발자 기능 사용을 선택합니다.

  3. 개발자 모드를 선택합니다. 시스템에서 일부 기능을 추가하는 중임을 알리는 대화 상자가 표시됩니다. 다음 단계로 넘어가기 전에 프로세스가 완료될 때까지 기다립니다.

앱 설치 테스트

다음 명령을 실행합니다.
Wdapp install <Your_Package.msixvc>

패키지는 개발 PC의 로컬 드라이브 또는 드라이브 문자에 매핑된 네트워크 드라이브에 있어야 합니다. UNC(범용 명명 규칙) 공유로부터 설치는 아직 지원되지 않습니다. 진행 상황이 보이지 않으면 Microsoft Store 앱을 열고 앱의 오른쪽 상단 모서리에 아래쪽 화살표로 표시된 다운로드 및 업데이트 섹션에서 진행 상황을 볼 수 있습니다(있는 경우). 줄임표(...)를 선택한 다음 다운로드 및 업데이트 를 선택할 수도 있습니다.

2022년 3월 Microsoft GDK(게임 개발 키트)부터 MSIXVC 패키지는 직접 수정하고 액세스할 수 있는 플랫 파일로 배치된 [drive]:\XboxGames 폴더에 설치됩니다. 이 드라이브 위치는 응용 프로그램 관리(wdapp.exe)에서 구성할 수 있습니다. 플랫 파일 설치 기능에 대한 자세한 내용은 플랫 파일 설치 개요를 참조하세요.

최종 패키지를 준비하여 개발자 센터에 제출

앞서 MakePkg.exe 명령을 사용하여 만든 패키지에는 테스트/개발 키를 사용하여 암호화하는 /LT 매개 변수가 사용되었습니다. 보안을 최대화하려면 /LK 플래그로 MakePkg.exe 명령을 다시 실행하여 안정된 키를 사용하여 암호화하거나 /L 플래그로 MakePkg.exe 명령을 다시 실행하여 고유한 키를 사용하여 암호화합니다. /LK로 생성한 패키지는 로컬 크기 델타 비교에 사용할 수 있을 뿐만 아니라 파트너 센터에 제출할 때 델타 업로드 최적화의 이점을 누릴 수 있으므로 /L보다는 /LK를 사용하는 것이 좋습니다.

샘플 MicrosoftGame.config

MicrosoftGame.config라는 파일을 만듭니다. 게임 콘텐츠의 루트 디렉터리에 있는 다음 콘텐츠를 사용하고 필요하지 않은 항목의 주석은 제거합니다.

MicrosoftGame.config를 수동으로 만들 수 있지만 MicrosoftGame.config 편집기를 활용하여 만드는 것이 가장 좋습니다. 이 도구를 사용하면 파트너 센터 프로젝트에서 직접 ID 및 ID 값을 간단하게 동기화할 수 있습니다.

<?xml version="1.0" encoding="utf-8"?>
<Game configVersion="1">
    <!-- Publisher should match the exact value provided in the "Package/Identity/Publisher" field of the Game setup -> Identity section of your product's configuration area in Partner Center.
         Name should match the exact value provided in the "Package/Identity/Name" field of the Game setup -> Identity section of your product's configuration area in Partner Center. -->
    <Identity Name="**REPLACE**"
        Publisher="**REPLACE**"
        Version="1.0.1.0"/>
        <!-- The fourth digit of the version number is reserved for Microsoft Store use -->
    <!--  Optional: Use StoreId if your product will offer durable downloadable content (DLC) packages.
    Look up the Store ID (12-character alphanumeric string) of your main application package in the Game setup -> Identity section of your product's configuration area in Partner Center. (Example: 9PNX12345AAA)
    <StoreId>**REPLACE WITH STOREID**</StoreId> -->

    <MSAAppId>**REPLACE WITH MSAAPPID**</MSAAppId> <!-- This value is found in the Xbox services -> Xbox Settings section in your product's configuration area in Partner Center. -->
    <TitleId>**REPLACE WITH TITLEID**</TitleId> <!-- This value is found in the Game Setup -> Identity section of your product's configuration area in Partner Center. -->

    <!--  Include any additional languages your title supports as appropriate -->
    <Resources>
      <Resource Language="en-US" />
    </Resources>

     <!-- Use override display name if you want to display a different title in the shell than the DefaultDisplayName from the ShellVisuals section, or if you need to localize it. -->

     <!-- Configuring the Alias attribute will allow you to take advantage of Execution Alias functionality when launching your executable. For more information, please see the MicrosoftGame.config reference documentation. -->

    <ExecutableList>
      <Executable Name="**REPLACE**"
                  Id="Game"
                  Alias="**REPLACE**"
                  OverrideDisplayName="**REPLACE**"
                  />
    </ExecutableList>

    <!-- DefaultDisplayName should match the exact value provided in the "Package/Identity/Name" field of the Game setup -> Identity section of your product's configuration area in Partner Center.
         PublisherDisplayName should use the exact value provided in the "Package/Properties/PublisherDisplayName" field of the Game setup -> Identity section of your product's configuration area in Partner Center.-->
    
    <!-- The following asset sizes apply
         StoreLogo - 100x100
         Square150x150Logo - 150x150
         Square44x44Logo - 44x44
         SplashScreenImage - 1920x1080
    -->
    <ShellVisuals DefaultDisplayName="**REPLACE**" 
                  PublisherDisplayName="**REPLACE**"
                  StoreLogo="StoreLogo.png"
                  Square150x150Logo="Logo.png"
                  Square44x44Logo="SmallLogo.png"
                  Description="**REPLACE**"
                  BackgroundColor="#000040"
                  SplashScreenImage="SplashScreen.png"/>
    
    <DesktopRegistration>
      <!-- Include this section if you need to run a custom installer action with Administrator privileges the first time that your game runs.
           Any executable you specify must be located under the "Installers" folder in the base folder of your game. Don't include any other files in the
           Installers folder.
      <CustomInstallActions>
        <Folder>Installers</Folder>
        <InstallActionList>
          <InstallAction File="CustomInstaller.exe" Name="UniqueInstallTaskName" Arguments="/silent /example" />
        </InstallActionList>
      </CustomInstallActions>
      -->
      <DependencyList>
        <!-- Omit the Dependency items if your game doesn't need them, or the entire DependencyList element. Note that your version of VCLibs may be different. See the Framework package dependencies topic of the documentation for details and guidance. -->
        <KnownDependency Name="VC11"/>
      </DependencyList>
        <!-- Select the ProcessorArchitecture that matches your game executables. -->
      <ProcessorArchitecture>x64</ProcessorArchitecture>
      <!--<ProcessorArchitecture>x86</ProcessorArchitecture>-->

      <!-- Include this section if your game uses Xbox services Multiplayer invites.
      <MultiplayerProtocol>true</MultiplayerProtocol>
      -->
    </DesktopRegistration>

    <!-- Include this section if your game writes files to its installation directory, and you're unable to change this by altering your source code and recompiling your game.
    <ExtendedAttributeList>
      <ExtendedAttribute Name="RestrictedCapability" Value="packageWriteRedirectionCompatibilityShim"/>
    </ExtendedAttributeList>
    -->
</Game>

다른 패키지 고려 사항과 고급 기능

공용 소프트웨어 종속 요소를 위한 프레임워크 패키지

앱이 Microsoft Store에 있는 일부 재배포 가능 소프트웨어를 프레임워크 패키지로 사용할 경우, 재배포 가능 요소를 연계해 설치하는 대신 프레임워크 패키지의 종속 요소로 선언할 수 있습니다.

예를 들어 앱에서 dxsetup.exe Microsoft 다운로드 사이트의 재배포 버전을 사용하여 만족한 기록이 있는 레거시 DirectX 런타임을 사용하는 경우 다음과 같이 Windows.Universal 및 Windows.Desktop의 표준 종속성과 함께 프레임워크 패키지에서 종속성을 선언할 수 있습니다. 이는 사용자 지정 설치 작업을 사용하여 재배포 버전을 직접 설치하는 것보다 선호되는데, 프레임워크 패키지가 Microsoft Store를 통해 자동으로 업데이트 가능하고, 사용자 지정 설치 작업의 경우 관리자 승인이 필요하고 설치 프로세스의 일환으로 확인 프롬프트가 생성되기 때문입니다.

<DependencyList>
  <KnownDependency Name="DX11"/>
</DependencyList>

알려진 종속성의 전체 목록은 MicrosoftGame.config 요소 - KnownDependency에 대한 설명서를 참조하세요.

설치 시 운영 체제와 Microsoft Store는 이 패키지 종속 요소가 앱과 함께 설치되도록 합니다. DirectX 및 Visual Studio C/C++ 런타임 프레임워크 패키지 종속 요소에 대한 자세한 내용은 프레임워크 패키지 종속 요소를 참조하세요.

모드 지원

2022년 3월 Microsoft GDK(게임 개발 키트)부터 이제 기본적으로 Mod가 지원됩니다. 자세한 내용은 Mod를 참조하세요.

사용자 지정 설치 작업

앱을 설치할 때 함께 설치해야 하는 추가 설치 프로그램(.exe 또는 .msi 파일)이 있을 경우, CustomInstallActions 요소를 사용하여 구성할 수 있습니다.

재배포 가능 요소의 경우 VC 런타임이나 DirectX 재배포 가능 .exe 또는 .msi 파일 등을 사용하도록 결정하기 전에 프레임워크 패키지를 사용할 수 있는지 확인하고 필요한 전제 조건을 확인해야 합니다. 사용자 지정 설치 작업에 대한 자세한 지침은 사용자 지정 설치 작업을 참조하세요.

제한된 기능 사용 권한

올바른 요소를 포함하도록 MicrosoftGame.config 파일을 구성하는 것 외에도 계정 관리자에게 전자 메일을 보내 타이틀에서 다음 기능을 사용하도록 사용 권한 설정을 요청해야 합니다.

  • 사용자 지정 설치 작업(CustomInstallActions 요소).

참고 항목

Xbox 본체용 타이틀 패키징 시작하기
MicrosoftGame.Config
Microsoft 게임 개발 키트 도구를 활용하여 PC 타이틀 설치 및 시작
PC 부트스트래퍼