建立和轉換來源內容群組對應
若要讓應用程式準備好進行串流安裝,您必須建立內容群組對應。 此文章將協助您了解建立和轉換內容群組對應時所需要的詳細資訊,以及提供一些過程中的秘訣與技巧。
建立來源內容群組對應
您將需要建立一個 SourceAppxContentGroupMap.xml
檔案,並使用 Visual Studio 或 MakeAppx.exe 工具將此檔案轉換為最終版本︰AppxContentGroupMap.xml
。 雖然您可以藉由直接建立 AppxContentGroupMap.xml
來省略一些步驟,但我們仍建議 (通常也會比較容易) 您先建立 SourceAppxContentGroupMap.xml
並進行轉換,因為在 AppxContentGroupMap.xml
中並不允許使用萬用字元 (但萬用字元能帶來極大的幫助)。
讓我們逐步解說一個簡單的案例,其中應用程式串流安裝很有説明。
假設您已建立遊戲,但最終應用程式的大小超過 100 GB。 這需要很長的時間才能從Microsoft Store下載,這可能不方便。 如果您選擇使用應用程式串流安裝,您可以指定下載應用程式檔案的順序。 藉由告訴市集先下載必要檔案,使用者就可以提早進入您的應用程式,並在背景繼續下載其他非必要的檔案。
注意
使用應用程式串流安裝高度依賴應用程式的檔案組織。 建議您考慮應用程式的內容配置,以儘快安裝應用程式串流,讓應用程式的檔案區隔更簡單。
首先,我們會建立一個 SourceAppxContentGroupMap.xml
檔案。
在我們進一步討論細節之前,以下是一個已經完成的簡易 SourceAppxContentGroupMap.xml
檔案︰
<?xml version="1.0" encoding="utf-8"?>
<ContentGroupMap xmlns="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap"
xmlns:s="http://schemas.microsoft.com/appx/2016/sourcecontentgroupmap">
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
</ContentGroupMap>
內容群組對應有兩個主要元件: 必要 區段,其中包含必要的內容群組,以及可包含多個自動內容群組的 自動 區段。
必要內容群組
必要內容群組是位於 SourceAppxContentGroupMap.xml
中 <Required>
元素下的單一內容群組。 必要內容群組應包含所有啟動應用程式所必要的檔案,並提供最低限度的使用者體驗。 由於受 .NET Native 編譯的限制,所有程式碼 (應用程式可執行檔) 都必須是必要群組的一部分,並將資產和其他檔案留在自動群組之中。
例如:若您的應用程式是一款遊戲,則必要群組中就必須包括主功能表或遊戲主畫面所需要的所有檔案。
以下是我們原始 SourceAppxContentGroupMap.xml
範例檔案的程式碼片段︰
<Required>
<ContentGroup Name="Required">
<File Name="StreamingTestApp.exe"/>
</ContentGroup>
</Required>
在這裡有幾件重要的事情值得注意︰
- 元素
<ContentGroup>
內的<Required>
必須 命名為 「必要」。此名稱僅保留給必要的內容群組,且無法與最終內容群組對應中的其他任何專案<ContentGroup>
搭配使用。 - 只有一個
<ContentGroup>
。 這是刻意的,因為檔案中應該只能有一個必要檔案群組。 - 在這個範例中的檔案是一個
.exe
檔案。 必要內容群組中不一定只能有一個檔案。您可以在群組中添加數個檔案。
要開始撰寫此檔案的簡便方法,就是在您最愛的文字編輯器中開啟一個新的頁面,快速執行 \[另存新檔\] 並將檔案儲存至您應用程式的專案資料夾中,然後將您剛建立的檔案命名為︰SourceAppxContentGroupMap.xml
。
重要
如果您要開發 C++ 應用程式,則必須調整 的 SourceAppxContentGroupMap.xml
檔案屬性。 將 Content
屬性設定為 True,並將 File Type
屬性設定為 XML 檔案。
當您在建立 SourceAppxContentGroupMap.xml
的時候,在檔案名稱中使用萬用字元將會很有幫助。如需詳細資訊,請參閱使用萬用字元的秘訣與技巧區段。
若您使用 Visual Studio 開發您的應用程式,我們建議您在必要內容群組中增加下列內容︰
<File Name="*"/>
<File Name="WinMetadata\*"/>
<File Name="Properties\*"/>
<File Name="Assets\*Logo*"/>
<File Name="Assets\*SplashScreen*"/>
新增檔案名稱僅為一個萬用字元的檔案,會將 Visual Studio 新增至您專案資料夾中的所有檔案包括在內,例如:應用程式可執行檔,或 DLL 檔案。 WinMetadata 和 Properties 資料夾則是為了將其他 Visual Studio 產生的資料夾也包含在內。 Assets 萬用字元則是為了選取能讓應用程式順利安裝的必要 Logo 和 SplashScreen 影像。
請注意:您無法在檔案結構的根目錄中使用雙萬用字元「**」包含專案中的所有檔案,因為當您嘗試將 SourceAppxContentGroupMap.xml
轉換為最終的 AppxContentGroupMap.xml
時將會失敗。
請務必記得足跡檔案 (AppxManifest.xml、AppxSignature.p7x、resources.pri 等) 也不應該包含在內容群組對應之中。 若足跡檔案包含在您所指定的萬用字元檔案名稱之中,則系統會忽略他們。
自動內容群組
自動內容群組是在使用者與已經下載完成的內容群組互動時,於背景繼續下載的資產。 其中包含了啟動應用程式所不需要的任何額外檔案。 例如:您可以將自動內容群組分為幾個不同層級,將每個層級定義為不同的內容群組。 如必要內容群組區段中所述︰由於受 .NET Native 編譯的限制,所有程式碼 (應用程式可執行檔) 都必須是必要群組的一部分,並將資產和其他檔案留在自動群組之中。
讓我們更仔細的觀察我們 SourceAppxContentGroupMap.xml
範例中的自動內容群組︰
<Automatic>
<ContentGroup Name="Level2">
<File Name="Assets\Level2\*"/>
</ContentGroup>
<ContentGroup Name="Level3">
<File Name="Assets\Level3\*"/>
</ContentGroup>
</Automatic>
自動群組的配置與必要群組的配置非常類似,除了有幾個例外︰
- 有多個內容群組。
- 除了保留給必要內容群組使用的「Required」之外,每個自動內容群組都可以有唯一的名稱。
- 自動內容群組不得包括任何必要內容群組中的檔案。
- 自動內容群組可以包含同時位於其他自動內容群組中的檔案。 每個檔案都只會下載一次,並且會在第一個包含該檔案的自動內容群組中進行下載。
使用萬用字元的秘訣與技巧
內容群組對應中的檔案配置總是會對應到您專案的根資料夾。
在我們的範例中,萬用字元會在這兩 <ContentGroup>
個元素內使用,以擷取一個檔案層級 「Assets\Level2」 或 「Assets\Level3」 中的所有檔案。如果您使用更深入的資料夾結構,您可以使用雙萬用字元:
<ContentGroup Name="Level2">
<File Name="Assets\Level2\**"/>
</ContentGroup>
您也可以在檔案名稱中使用萬用字元。 例如:若您想要包含您「Assets」資料夾下所有檔案名稱包含「Level2」的檔案,您可以透過這種方式達成:
<ContentGroup Name="Level2">
<File Name="Assets\*Level2*"/>
</ContentGroup>
將 SourceAppxContentGroupMap.xml 轉換為 AppxContentGroupMap.xml
若要將 SourceAppxContentGroupMap.xml
轉換為最終版本的 AppxContentGroupMap.xml
,您可以使用 Visual Studio 2017 或 MakeAppx.exe 命令列工具。
若要使用 Visual Studio 轉換您的內容群組對應:
- 新增
SourceAppxContentGroupMap.xml
至您的專案資料夾 - 在 \[內容\] 視窗中變更
SourceAppxContentGroupMap.xml
的組建動作為「AppxSourceContentGroupMap」 - 在方案總管中的專案上按一下滑鼠右鍵
- 流覽至Microsoft Store - > 轉換內容群組對應檔案
若您並未在 Visual Studio 中開發您的應用程式,或您比較喜歡使用命令列,您可以使用 MakeAppx.exe 工具轉換您的 SourceAppxContentGroupMap.xml
。
一道簡單的 MakeAppx.exe 命令看起來會像這樣︰
MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\
/s 選項指定 SourceAppxContentGroupMap.xml
的路徑,/f 則指定了 AppxContentGroupMap.xml
的路徑。 最後的選項 /d 則是指定了展開檔案名稱萬用字元的基礎資料夾,而在這個範例中我們使用的即是應用程式專案資料夾。
如需有關 MakeAppx.exe 中可用選項的詳細資訊,請開啟命令提示字元,巡覽至 MakeAppx.exe,然後輸入︰
MakeAppx convertCGM /?
這些就是取得您最終 AppxContentGroupMap.xml
檔案並為您的應用程式準備就緒所需要的所有步驟! 在您的應用程式完全準備好Microsoft Store之前,還有更多功能可以執行。 如需將串流安裝新增至應用程式的詳細資訊,請參閱 此頁面。