> ## 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.

# 使用 MSIXVC2 的內容更新

> 使用 MSIXVC2 的內容更新

MSIXVC2 從根本上改變了內容更新的計算和傳遞方式。在原始 MSIXVC 格式中，內容更新以固定的 4 KB 區塊邊界運作，且對檔案配置、區塊順序以及封裝檔案內的對齊很敏感。在 MSIXVC2 中，內容更新使用以內容為基礎的分段來追蹤位元組層級的變更，消除了在 MSIXVC 中使更新大小膨脹的對齊限制。

<Note>
  如需原始 MSIXVC 格式特有的內容更新指引，請參閱[內容更新最佳做法](/zh-TW/build/core-features/common/packaging/packaging-updates)。
</Note>

## MSIXVC2 內容更新的運作方式

### 以內容為基礎的分段

MSIXVC2 根據實際內容而非固定的區塊邊界，將檔案資料分割成大小可變的區段。每個區段都以其內容的雜湊來識別。

此方法表示：

* **在區塊之間移動檔案不會觸發重新下載。** 無論檔案屬於哪個區塊，其內容雜湊都保持不變。
* **在區塊內重新排序檔案不會觸發重新下載。** 區段邊界由內容決定，而非位置。
* **重新排序區塊不會觸發重新下載。** 區塊配置是一個邏輯概念，不會影響資料的實體分段。
* **插入或移除資料不會產生連鎖效應。** 與固定區塊系統不同，小幅插入不會移動所有後續區塊，也不會強制重新下載未變更的內容。

### 上傳時的重複資料刪除

每個區段在上傳之前都會進行雜湊處理。上傳程序會查詢 CDN，以判斷哪些區段已存在於先前的版本中。只有新的或已變更的區段才會上傳並傳遞給玩家。此重複資料刪除會自動進行，不需要開發人員採取任何動作。

### 每個區段的加密和壓縮

每個區段都會獨立壓縮和加密。這可確保更新一個區段不會影響其他區段。

## 與 MSIXVC 相比的變更

MSIXVC 內容更新的下列對齊和配置限制**不適用**於 MSIXVC2：

| MSIXVC 限制 | MSIXVC2 行為 |
| - | - |
| 在封裝檔案內將資產對齊到 4 KB 邊界 | 不需要。以內容為基礎的分段與對齊無關。 |
| 請勿變更區塊 ID 或在區塊之間移動檔案 | 可以自由變更區塊配置。沒有重新下載的代價。 |
| 請勿重新排序區塊、檔案或資產 | 可以自由重新排序。區段雜湊以內容為基礎。 |
| 資料無法有效率地移動 | 內容雜湊會自然地處理資料移動。 |
| 固定的最小雜湊樹額外負荷會隨遊戲大小增加 | 額外負荷極小；可部分下載。 |

<Tip>
  如果您目前正投入心力在組建管線中維持穩定的檔案順序、凍結資產配置或謹慎管理 4 KB 對齊，MSIXVC2 讓您不再需要這些工作。如果您要為主機發行 XVC 套件，這些最佳化仍然適用。
</Tip>

## 更新大小比較

下列資料比較相同遊戲組建在 MSIXVC 和 MSIXVC2 之間的內容更新大小。遊戲未做任何變更，資產相同、組建相同，只有封裝格式不同。

| 遊戲 | 引擎 | MSIXVC 更新 | MSIXVC2 更新 | 減少幅度 |
| - | - | - | - | - |
| 遊戲 A | Unity | 1.27 GB | 71 MB | ↓ 94% |
| 遊戲 B | Unity | 411 MB | 49 MB | ↓ 88% |
| 遊戲 C | 自訂 | 2.5 GB | 473 MB | ↓ 81% |
| 遊戲 D | Unreal | 1.75 GB | 595 MB | ↓ 66% |

遊戲 D 的改善幅度較小，因為該遊戲已經針對 MSIXVC 內容更新 (CUv3) 進行過手動最佳化。大多數尚未進行此最佳化工作的遊戲將會看到更大的減少幅度。使用 MSIXVC2 後，不再需要進行此最佳化工作。

## 套件額外負荷的減少

每個 MSIXVC 套件都包含一個固定的最小雜湊樹，其大小會隨遊戲總大小增加。每次更新時一律會完整下載此額外負荷。對於大型遊戲而言，此額外負荷相當可觀：

| 遊戲 | MSIXVC 額外負荷 | MSIXVC2 額外負荷 | 減少幅度 |
| - | - | - | - |
| 遊戲 C (\~320 GB) | 2.049 GB (0.66%) | 184.3 MB (0.06%) | ↓ 91% |

MSIXVC2 額外負荷也可以部分下載，這表示玩家只會收到與其更新相關的中繼資料部分。

## 基礎遊戲大小的改善

以內容為基礎的分段和內建壓縮也會減少基礎遊戲的下載大小：

| 遊戲 | MSIXVC 基礎 | MSIXVC2 基礎 | 減少幅度 |
| - | - | - | - |
| 遊戲 A | 11.7 GB | 4.2 GB | ↓ 64% |
| 遊戲 B | 918 MB | 558 MB | ↓ 39% |
| 遊戲 C | 320.0 GB | 270.5 GB | ↓ 15% |
| 遊戲 D | 129.9 GB | 121.0 GB | ↓ 7% |

具有未壓縮內容或區塊之間有大量重複資料的遊戲，基礎大小的減少幅度最大。已經壓縮所有內容且沒有重複資料的遊戲 (例如遊戲 D)，改善幅度較小但仍有意義。

## 為您的遊戲評估 MSIXVC2

若要測量您自己遊戲的內容更新改善：

1. 取得遊戲的兩個連續組建 (例如，發行組建和後續修補程式)。
2. 使用 `makepkg` 封裝這兩個組建。

```text theme={null}
   makepkg pack /msixvc2 /f layout.xml /d <old_build> /pc /pd <output_old>
   makepkg pack /msixvc2 /f layout.xml /d <new_build> /pc /pd <output_new> /priorpackage <output_old\package.msixvc>
```

3. 將產生的更新大小與對等的 MSIXVC (v1) 組建進行比較。
4. 使用比較結果來規劃移轉至 MSIXVC2。

<Info>
  將 MSIXVC2 套件上傳至 Partner Center 中的個別分支 (例如 `msixvc2`)。請勿在同一個分支上混用 MSIXVC2 和 MSIXVC 套件。將分支從 MSIXVC2 還原為 MSIXVC 需要完整重新上傳，並強制該分支上的玩家完整重新下載。如需詳細資訊，請參閱[套件分支最佳做法](/zh-TW/build/core-features/common/packaging/overviews/packaging-msixvc2-overview#package-branch-best-practices)。
</Info>

## 跨平台遊戲的填補考量

如果您的遊戲同時在 PC (MSIXVC2) 和主機 (XVC) 上發行，您可以為每個平台使用不同的填補設定。在 MSIXVC2 下，您可以安全地減少或移除 PC 組建的填補，而不會影響更新效率。如果您偏好在各平台之間維持相同的設定，該設定也可以正常運作而不會有任何代價，MSIXVC2 可以處理這兩種情況。

## 另請參閱

[MSIXVC2 封裝概觀](/zh-TW/build/core-features/common/packaging/overviews/packaging-msixvc2-overview) [內容更新最佳做法 (MSIXVC)](/zh-TW/build/core-features/common/packaging/packaging-updates) [MSIXVC2 加密模型](/zh-TW/build/core-features/common/packaging/packaging-encryption-msixvc2) [開始使用適用於 PC 的 MSIXVC2](/zh-TW/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC-msixvc2) [Make Package (makepkg.exe)](/zh-TW/build/core-features/common/packaging/deployment/makepkg)


## Related topics

- [使用 MSIXVC2 进行内容更新](/zh-CN/build/core-features/common/packaging/packaging-updates-msixvc2.md)
- [内容更新最佳实践](/zh-CN/build/core-features/common/packaging/packaging-updates.md)
- [创建、检查和测试内容更新](/zh-CN/build/core-features/common/packaging/packaging-testing-updates.md)
- [MSIXVC2 加密模型](/zh-CN/build/core-features/common/packaging/packaging-encryption-msixvc2.md)
- [MSIXVC2 打包概述](/zh-CN/build/core-features/common/packaging/overviews/packaging-msixvc2-overview.md)
