簡介
MakePkg.exe 是一個將內容放入二進位封裝檔案的工具,此檔案稱為 XBOX Virtual Container (XVC)。主機用套件的副檔名為 .xvc,PC 用套件的副檔名為 .msixvc。除了副檔名不同之外,套件名稱還會加上後置字元,以區分 XBOX One 系列 (_x) 與 XBOX Series X|S 系列 (_xs) 套件。 MakePkg.exe 使用您遊戲的內容和對應檔作為輸入,產生使用以下其中一種金鑰加密的套件:公開的測試金鑰、隨機產生的金鑰,或可安全用於加密的穩定金鑰。用於加密的金鑰取決於套件是用於本機測試,還是要提交給 Microsoft 進行發行。以下各節詳細說明這些使用案例。 對應檔中的 XML 有兩個用途。首先,它指定遊戲在執行階段可使用之檔案的位置。其次,它指定每個檔案所屬的區塊 (chunk) 檔案。有一組區塊稱為「啟動集」,一律會在允許遊戲執行之前安裝。其餘區塊則會在遊戲執行時安裝。您可以使用 API 查詢區塊安裝的進度,並修改尚未安裝之區塊的安裝順序。 本文內容:封裝期間的步驟
MakePkg 封裝程序包含數個步驟。MicrosoftGame.config 與檔案存在驗證
makepkg 命令會檢查內容來源目錄中的 MicrosoftGame.config 檔案是否有效且可安裝。
執行 makepkg pack 命令時,它會確保 MicrosoftGame.config 中參考的檔案存在於來源目錄中。它會驗證這些檔案是否包含在套件的啟動集中。此驗證涵蓋二進位檔、影像檔和任何其他資源。
二進位簽署
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不同)。 - 它使用安全的加密金鑰資料,且只能在特定環境中解密 (與
/lt不同)。
/lt 和 /l 加密模式不同,/lk 模式需要額外的一次性步驟才能使用:
- 一次性:執行
makepkg genkey /ekb SECRET_KEY.lekb以建立 SECRET_KEY.lekb 檔案。這是本機託管金鑰 Blob (LEKB), 其中儲存用來加密套件的穩定內容金鑰。它應儲存在安全的位置,並僅限有需要的人員存取。在理想的 設定中,只有正式的組建電腦/帳戶才應有權存取它。 - 建立套件:執行
makepkg pack /lk SECRET_KEY.lekb ...。這會建立使用 SECRET_KEY.lekb 檔案中所儲存金鑰加密的套件。 - 上傳套件:XVC 和 EKB 檔案照常上傳到 Partner Center。LEKB 和 CEKB 檔案不會上傳。
xbapp install 會自動安裝將套件載入 XBOX 開發套件所需的 CEKB 檔案。如果您要測試的安裝
案例不是以工具為基礎的安裝 (遊戲光碟、外部儲存裝置、主機對主機傳輸),請使用 xbapp installkey 命令
僅安裝 CEKB 檔案。
都能解密其內容。
都能在其開發套件上安裝該套件、啟動該套件,並使用 xbcp 將檔案從套件中複製出來。
提交驗證
MakePkg 在建立套件後,會自動對遊戲檔案執行 Submission Validator (SubmissionValidator.dll)。Submission Validator 的目標是檢查可能在稍後 Microsoft 的擷取、提交或認證程序中,或在未來的內容更新中對遊戲造成問題的錯誤和問題。您必須修正所有偵測到的問題,才能產生已簽署的套件以上傳到 Partner Center。 提交驗證程序會產生一個 XML 記錄檔,詳細說明任何失敗的性質和位置。此程序會將記錄檔寫入 MakePkg 的/pd 參數所指定的套件檔案輸出位置。此記錄可能包含失敗或警告。您必須先解決失敗問題,才能將套件提交給 Microsoft。請考慮修正警告,以確保遊戲符合原則和 XBOX 需求 (XR) 指引。
當您將套件上傳到 Partner Center 並提交進行擷取程序時,驗證檢查會再次執行。此程序可確保使用最新版本的 Submission Validator 檢查遊戲,並盡早發現任何問題。
提交驗證測試
隨著 Microsoft 發現新問題,具體的測試也會隨時間演進。通過 Submission Validator 檢查不應被解讀為遊戲提交在擷取和認證程序中不會出現其他問題。相反地,其目的僅在於減少因可預見錯誤而遭拒所造成的時間和成本。此外,雖然 Submission Validator 可以檢查某些與安全性相關的問題,但不應將其視為遊戲的安全性測試。
您可以從 XBOX Game Developer (XGD) 網站下載最新版本的 Submission Validator。由於此工具的演進速度可能與 XBOX One 軟體開發套件版本不同,請務必使用最新版本,以避免在提交程序中因驗證失敗而遭拒。若要取得最新版本,請參閱 XBOX Developer Downloads->XBOX One->Submission Validator。
如需 Submission Validator 的詳細資訊,請參閱 GDK 文件中的 Submission Validator (SubmissionValidator.dll)。
如果您對驗證程序有疑問,請連絡您的 Microsoft 客戶代表。
開發期間封裝的建議步驟
若要在開發期間建立套件,請使用下列步驟。以 PC 為目標時,請使用wdapp 而非 xbapp。
- 使用測試簽署的套件,並從開發 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 若要測試串流安裝的其他選項,請參閱本文稍後的測試串流安裝套件。
- 使用燒錄到藍光光碟根資料夾中的測試簽署套件,測試從光碟機安裝遊戲。將光碟插入 XBOX 開發套件後,執行下列命令。 xbapp install XO:\XVC-file-name
-
使用與測試簽署套件相同的封裝命令來準備最終提交,但加上
/l旗標。
測試串流安裝套件 (PC)
使用wdapp 命令在測試 PC 上安裝套件。
目前,測試用 MSIXVC 套件必須存在於測試 PC 的實體磁碟機或網頁伺服器上。未來的更新將新增從通用命名慣例 (UNC) 共用安裝的功能。
測試串流安裝套件 (主機)
您可以透過四種方式測試測試簽署串流安裝套件的安裝。從開發 PC 串流
從開發 PC 串流不支援任何輸送量節流。安裝速度取決於開發 PC 的處理器和 I/O 特性,以及開發 PC 與開發套件之間網路連線的頻寬。在使用機械式硬碟的新式開發 PC 上,透過 Gigabit 乙太網路連線,速度預期可達 300 Mbps (約 36 MiB/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 的資料夾,且該資料夾內含您的套件。 將光碟插入執行中的開發套件。殼層會自動開始安裝您的遊戲,並在安裝啟動集後由開發套件顯示通知,此時即可啟動遊戲。最佳做法
使用子檔案內容更新
使用子檔案內容更新,以減少內容更新的大小。編寫套件配置時,請確保未來能進行最佳化的內容更新。 如需編寫可最佳化更新之套件的詳細資訊,請參閱內容更新最佳做法。XBOX 需求 034 (XR-034:串流安裝初始遊玩標記)
包含初始遊玩標記是選擇性的,但強烈建議使用。它可讓使用者在遊戲完全安裝之前就開始執行,同時在背景繼續安裝。根據 XR-034:串流安裝初始遊玩標記,包含初始遊玩標記的遊戲在從初始遊玩標記啟動時,必須提供遊戲體驗。測試您的遊戲
在遊戲從各種來源以不同速度安裝時測試您的遊戲。使用最新的 Submission Validator
一律使用最新版本的 Submission Validator。 最新版本的 Submission Validator 可從 XBOX Developer Downloads->XBOX One->Submission Validator 取得。開啟的資料連線所造成的封裝失敗
當您使用xbapp install /w 安裝套件,或 XBOX Manager 在啟用 [保持資料連線開啟] 選項的情況下安裝套件時 (用於 Intelligent Delivery 和隨選區塊案例),主機與 PC 上套件檔案之間的資料管道在安裝完成後仍會保持開啟。此開啟的連線會鎖定套件檔案。
如果您在此管道開啟時嘗試重新建置或重新封裝遊戲,makepkg 會因共用違規而失敗,因為它無法寫入已鎖定的套件檔案。
若要解決此問題,請在重新建置之前關閉開啟的資料連線:
- XBOX Manager:在 XBOX Manager 應用程式中,找到已安裝的套件並取消核取 [保持資料連線開啟] 選項,或解除安裝套件後在未啟用該選項的情況下重新安裝。
- xbapp install:如果安裝後不需要讓管道保持開啟,請省略
/w旗標。只有在開發測試期間遊戲需要在執行階段要求額外區塊時,才使用/w。 - 關閉 XBOX Manager:完全關閉 XBOX Manager 會釋放其在套件檔案上保留的所有開啟檔案控制代碼。
資源與指引
如需詳細資訊,請參閱下列文章:- 系統 > 概觀 > 串流安裝與 Intelligent Delivery:概觀
- 系統 > 概觀 > 串流安裝 > 動態重新排序區塊
- 系統 > 概觀 > 串流安裝 > 串流安裝:狀態
- 測試、自動化與發行 > 工具 > 串流安裝 > 部署套件結構描述
- 測試、自動化與發行 > 工具 > 串流安裝 > Make Package (makepkg.exe)
