> ## 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 的內容更新](/zh-TW/build/core-features/common/packaging/packaging-updates-msixvc2)和[開始使用適用於 PC 的 MSIXVC2](/zh-TW/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC-msixvc2#comparing-update-sizes)。
</Tip>

## 概觀

本文說明如何提供內容更新、用來產生和測量更新的工具，以及如何測試關鍵更新案例以確保預期且最佳的行為。

## 內容更新的運作方式

當您為遊戲套件提供更新時，遊戲服務一律會將需要傳輸的位元組數降到最低。此最佳化同時適用於遊戲裝置上的客戶以及上傳套件的開發人員。系統使用演算法來計算此差異 (*差異*)，概略而言，這些演算法會嘗試將兩個套件之間 4-KiB 區段的相符程度最大化。

系統會將此差異編碼為 `.xsp` (更新串流計劃) 檔案的一部分。透過使用這些檔案，系統可以確切知道要從網路下載哪些位元組，以及如何將它們套用至任何可能的現有套件版本。

若要在開發中模擬和測試準確的差異更新行為，請使用適當的 `makepkg` 選項來建立套件。此外，請使用適當的命令來安裝和更新套件。

## 根據先前的套件版本建立更新

使用 [`makepkg`](/zh-TW/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 中所定義。

此命令會建立名為 `[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% 更新的檔案，提供個別表格的連結，顯示更新在每個檔案中所變更的資料範圍

使用此資訊來識別更新中變更最多的檔案。查看個別檔案，確認變更的比例和位置是否符合預期。如果您看到某些檔案導致的更新比平常更大，請檢閱[有效率地製作更新](/zh-TW/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 檔案，它會使用該檔案。

## 公告更新

公告更新與其他更新方法略有不同。當您公告更新時，會讓遊戲**可以使用**該更新，進而產生特定的系統行為。

若要公告可用的更新，請將 `/m` 或 `/a` 旗標套用至 `xbapp` 或 `wdapp` update。此動作會使更新在遊戲啟動之前不會套用。發生此情況時：

* 主機：會顯示系統對話方塊，指出需要更新。
* 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，然後在一或多部開發套件上從 Store 應用程式安裝該版本。接著，上傳新版本。新版本發行後，在已安裝舊版本的開發套件上，確認系統偵測到新版本，而且可以使用預期的差異大小進行更新。

若要重複此測試，請在更新之前將舊版本安裝複製到外部磁碟機，以便稍後將它複製回來覆蓋任何新版本。如果您沒有儲存此版本，可以要求提供 CDN URL，以便使用 `xbapp install` 或 `wdapp install` 從中安裝舊版本。安裝舊版本之後，您就可以重複更新測試。

## 混合式光碟和 CDN 更新

更新也適用於光碟安裝。當您從光碟安裝時，安裝程序會安裝與光碟之最新可用數位套件相比未變更的任何光碟內容。安裝程序會同時從 Store CDN 安裝其餘內容。此程序會自動進行。

若要模擬此程序，請使用下列命令：

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

透過 HTTP 伺服器提供更新套件，是為了因應安裝只能有一個來自開發電腦本機儲存體之來源的因應措施。

如果您使用光碟 .xvc 套件燒錄測試光碟，光碟套件可以指向光碟路徑。

### 另請參閱

[內容更新最佳做法](/zh-TW/build/core-features/common/packaging/packaging-updates)

[檢查更新](https://learn.microsoft.com/build/store/commerce/fundamentals/xstore-checking-for-updates)


## Related topics

- [XBOX 主機遊戲的認證測試 XBOX 需求](/zh-TW/publishing/certification/console-cert-tested-requirements.md)
- [XR-003 提交的遊戲品質](/zh-TW/publishing/certification/xr/xr-003.md)
- [创建、检查和测试内容更新](/zh-CN/build/core-features/common/packaging/packaging-testing-updates.md)
- [XBOX 需求和測試案例的變更歷程記錄](/zh-TW/publishing/certification/xr-change-history.md)
- [内容更新最佳实践](/zh-CN/build/core-features/common/packaging/packaging-updates.md)
