> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 콘텐츠 업데이트 만들기, 검토 및 테스트

> 콘텐츠 업데이트 만들기, 검토 및 테스트

<Tip>
  **MSIXVC2를 사용하시나요?** MSIXVC와 MSIXVC2 사이의 업데이트 크기를 비교하려면 `makepkg`를 사용하여 두 빌드를 모두 패키징하세요. 자세한 내용은 [MSIXVC2를 사용한 콘텐츠 업데이트](/build/core-features/common/packaging/packaging-updates-msixvc2) 및 [PC용 MSIXVC2 시작하기](/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC-msixvc2#comparing-update-sizes)를 참조하세요.
</Tip>

## 개요

이 문서에서는 콘텐츠 업데이트를 전달하는 방법, 업데이트를 생성하고 측정하는 데 사용하는 도구, 그리고 예상되고 최적화된 동작을 보장하기 위해 주요 업데이트 시나리오를 테스트하는 방법을 설명합니다.

## 콘텐츠 업데이트 작동 방식

게이밍 서비스는 게임 패키지에 업데이트를 제공할 때 항상 전송해야 하는 바이트 수를 최소화합니다. 이 최적화는 게이밍 장치의 고객과 패키지를 업로드하는 개발자 모두에게 적용됩니다. 시스템은 상위 수준에서 두 패키지 간의 4KiB 세그먼트 일치를 극대화하려는 알고리즘을 사용하여 이 차이(*델타*)를 계산합니다.

시스템은 이 델타를 `.xsp`(업데이트 스트리밍 플랜) 파일의 일부로 인코딩합니다. 이러한 파일을 사용하여 시스템은 네트워크에서 어떤 바이트를 다운로드해야 하는지, 그리고 이를 가능한 모든 기존 패키지 버전에 어떻게 적용할지를 정확히 알게 됩니다.

개발 중에 정확한 델타 업데이트 동작을 시뮬레이션하고 테스트하려면 적절한 `makepkg` 옵션을 사용하여 패키지를 생성하세요. 또한 패키지를 설치하고 업데이트하기 위해 적절한 명령을 사용하세요.

## 이전 패키지 버전 기반으로 업데이트 만들기

패키지를 만들려면 [`makepkg`](/build/core-features/common/packaging/deployment/makepkg) pack을 사용하세요. 이전 패키지를 사용하는 패키지를 만들려면 `/priorpackage` 매개변수를 사용하세요.

```cmd theme={null}
makepkg pack /f chunks_layout.xml /d [build directory] /pd .\output /priorpackage [previous version].xvc
```

이전 패키지는 microsoftgame.config에 정의된 대로 만들고 있는 패키지와 동일한 패키지 ID를 가져야 합니다.

이 명령은 `[new package name]_update-[old version number].[guid].xsp`라는 이름의 .xsp 파일을 만듭니다. 예를 들어, 41336MicrosoftATG.ATGGameHubRequiredGame\_200.0.0.0\_neutral\_\_dspnxghe87tn0\_xs\_update-100.0.0.0.5890f4a0-b449-4c5d-80ff-b78b19ed3439.xsp

이 파일은 이전 패키지에서 새 패키지로 업데이트할 때 무엇이 변경되어야 하는지를 인코딩하는 **스트리밍 플랜**입니다. [업데이트 테스트](#testing-updates) 섹션은 이 플랜을 사용하는 방법을 보여줍니다.

## 업데이트 크기 검토

앞의 명령을 실행하면 동일한 파일 이름을 가진 두 개의 추가 파일이 생성됩니다. .html 파일과 .json 파일입니다.

두 파일 모두 다음 정보를 포함합니다.

1. 업데이트가 다운로드하는 바이트의 요약
2. 특정 태그, 언어 또는 장치 유형에 대해 업데이트가 설치하는 데이터의 양을 요약한 표
3. 업데이트가 변경하는 바이트 수와 이 변경이 전체 파일 크기에서 차지하는 비율을 보여주는 정렬 가능한 파일 표
4. 100% 업데이트되지 않은 각 파일에 대해, 업데이트가 변경하는 각 파일의 데이터 범위를 보여주는 개별 표에 대한 링크

이 정보를 사용하여 업데이트에서 어떤 파일이 가장 많이 변경되었는지 식별하세요. 개별 파일을 살펴보고 변경 사항의 비율과 위치가 예상한 대로인지 확인하세요. 평소보다 큰 업데이트를 초래하는 파일이 보인다면 [효율적으로 업데이트 작성](/build/core-features/common/packaging/packaging-updates#author-packages-efficiently) 섹션의 지침을 검토하세요.

두 .xvc 파일에 대해 `packageutil compare`도 이러한 동일한 파일을 생성하며 패키지 차이의 요약 출력을 제공합니다. 이 명령은 또한 .xsp 파일을 생성합니다.

## 델타 업로드

Partner Center에 대한 업로드는 자동으로 델타 계산 알고리즘을 활용합니다. 마지막으로 업로드한 패키지(해당 브랜치에 대한)와 업로드 중인 패키지 사이의 델타가 처음에 계산되므로, 변경된 데이터만 업로드 컴퓨터에서 수집 서비스로 전송됩니다.

## 업데이트 테스트

시스템 UI에 표시되는 업데이트 크기를 검증하려면 다음 단계를 수행하세요.

1. `xbapp install` \[old version.xvc]
2. `xbapp update` \[new version.xvc] (`/plan=`\[.xsp file])

업데이트할 때 시스템 UI의 대기열로 이동하여 업데이트되는 바이트 수를 사람이 읽기 쉬운 형식으로 확인하세요.

.xsp가 이전에 다른 명령에 의해 생성되었고 .xvc 파일과 동일한 위치에 있는 경우 /plan 매개변수는 선택 사항입니다.

PC에서는 대신 `wdapp` 명령을 사용합니다. 패키지 파일은 .msixvc 파일 확장자를 사용하며, 설치 및 업데이트 진행 상황은 XBOX 앱과 Microsoft Store 앱 모두의 다운로드 대기열 섹션에서 볼 수 있습니다. `wdapp update`는 /plan 매개변수를 지원하지 않습니다. 대상 버전에 대해 생성된 .xsp 파일이 만들어졌다면 이를 사용합니다.

## 업데이트 알리기(advertising)

업데이트를 알리는 것은 다른 업데이트 방법과 약간 다릅니다. 업데이트를 알리면 게임에서 업데이트를 **사용할 수 있게** 되며, 이로 인해 특정 시스템 동작이 발생합니다.

사용 가능한 업데이트를 알리려면 `xbapp` 또는 `wdapp` update에 `/m` 또는 `/a` 플래그를 적용하세요. 이 작업은 게임이 실행될 때까지 업데이트가 적용되지 않도록 합니다. 이 조건이 발생하면 다음과 같이 됩니다.

* 콘솔: 업데이트가 필요하다는 시스템 대화 상자가 표시됩니다.
* PC: 개발 빌드의 경우 시스템 프롬프트가 표시되지 않으며, `wdapp install` 또는 부트스트래퍼를 사용하여 빌드가 설치되지 않은 한 빌드를 자유롭게 실행할 수 있습니다. 이 경우 게임을 실행하면 PC 부트스트래퍼가 호출되어 업데이트를 확인하고 설치를 요청합니다.

업데이트를 알리는 것은 또한 특정 `XStore` API가 반응하도록 하여 게임이 사용 가능한 업데이트를 감지할 수 있게 합니다. 이 동작은 DLC 패키지에 가장 관련이 있습니다. 자세한 내용은 [업데이트 확인](https://learn.microsoft.com/build/store/commerce/fundamentals/xstore-checking-for-updates)을 참조하세요.

## Store 패키지 업데이트

앞의 예제는 로컬 패키지를 사용하여 설치 및 업데이트를 수행하는 것을 포함합니다. 일부 시나리오에서는 Partner Center에 업로드하고 Store CDN에서 다운로드한 패키지를 사용하여 업데이트를 테스트하고 싶을 수 있습니다. 이 프로세스는 두 가지를 검증합니다. Store에서 업데이트할 때의 성능과 수집 프로세스의 일환으로 생성되는 스트리밍 플랜의 활용입니다.

안타깝게도 서명 차이로 인해 로컬 패키지에서 Store 패키지로 업데이트할 수 없습니다. 별도의 도움 없이 할 수 있는 일은 Partner Center에 단일 버전을 업로드한 다음 하나 이상의 devkit에서 Store 앱을 통해 해당 버전을 설치하는 것입니다. 그런 다음 새 버전을 업로드합니다. 새 버전이 게시되면, 이전 버전이 설치된 devkit에서 새 버전이 감지되고 예상 델타 크기로 업데이트할 수 있는지 확인합니다.

이 테스트를 반복하려면 업데이트 전에 이전 버전 설치를 외부 드라이브에 복사하여 나중에 새 버전 위에 다시 복사할 수 있도록 하세요. 이 버전을 저장하지 않았다면 `xbapp install` 또는 `wdapp install`을 사용하여 이전 버전을 설치할 수 있는 CDN URL을 요청할 수 있습니다. 이전 버전을 설치한 후 업데이트 테스트를 반복할 수 있습니다.

## 하이브리드 디스크 및 CDN 업데이트

업데이트는 광학 디스크 설치에도 적용됩니다. 디스크에서 설치할 때 설치 프로세스는 디스크에서 사용 가능한 최신 디지털 패키지에 비해 변경되지 않은 디스크 콘텐츠를 설치합니다. 설치 프로세스는 나머지 콘텐츠를 Store CDN에서 동시에 설치합니다. 이 프로세스는 자동으로 발생합니다.

이 프로세스를 시뮬레이션하려면 다음 명령을 사용하세요.

```cmd theme={null}
xbapp update http://server/[latest version].xvc /p:[disc package].xvc`
```

HTTP 서버를 통해 업데이트 패키지를 제공하는 것은 설치가 개발 PC의 로컬 저장소에서 하나의 소스만 가질 수 있다는 사실에 대한 해결 방법입니다.

디스크 .xvc 패키지를 사용하여 테스트 디스크를 굽는 경우, 디스크 패키지는 광학 디스크 경로를 가리킬 수 있습니다.

### 참고 항목

[콘텐츠 업데이트 모범 사례](/build/core-features/common/packaging/packaging-updates)

[업데이트 확인](https://learn.microsoft.com/build/store/commerce/fundamentals/xstore-checking-for-updates)


## Related topics

- [콘텐츠 업데이트 모범 사례](/ko/build/core-features/common/packaging/packaging-updates.md)
- [제품 변경 및 콘텐츠 업데이트](/ko/publishing/game-publishing/publishing-processes/managed-creators/publishing-processes-post-release-lifecycle.md)
- [RETAIL 샌드박스 테스트 권장 사항](/ko/publishing/game-publishing/publishing-processes/managed-creators/publishing-processes-recommendations-for-testing-in-retail.md)
- [미리 보기 기간 동안 Playtest 사용](/ko/publishing/game-publishing/concepts/playtest-preview.md)
- [업데이트 확인](/ko/publishing/xstore-commerce/xstore-checking-updates.md)
