建立和轉換來源內容群組對應

若要讓應用程式準備好進行串流安裝,您必須建立內容群組對應。 本文將協助您瞭解建立和轉換內容群組地圖的詳細數據,同時提供一些秘訣和訣竅。

建立來源內容群組對應

您必須建立檔案 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 原生編譯,所有程式代碼(應用程式可執行檔)都必須是必要群組的一部分,讓資產和其他檔案成為自動群組的一部分。

例如,如果您的應用程式是遊戲,則必要的群組可能包含主功能表或遊戲主畫面中使用的檔案。

以下是原始 SourceAppxContentGroupMap.xml 範例檔案中的代碼段:

<Required>
    <ContentGroup Name="Required">
        <File Name="StreamingTestApp.exe"/>
    </ContentGroup>
</Required>

這裡有一些重要事項需要注意:

  • <ContentGroup>元素內的 <Required> 必須命名為 「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 產生的其他資料夾。 資產通配符是選取要安裝應用程式所需的標誌和 SplashScreen 影像。

請注意,您無法在檔案結構的根目錄中使用雙通配符 「**」,以在專案中包含每個檔案,因為在嘗試轉換成 SourceAppxContentGroupMap.xml 最終 AppxContentGroupMap.xml時,這會失敗。

也請務必注意,磁碟使用量檔案(AppxManifest.xml、AppxSignature.p7x、resources.pri 等)不應包含在內容群組對應中。 如果磁碟使用量檔案包含在您指定的其中一個通配符檔名內,則會忽略它們。

自動內容群組

自動內容群組是在使用者與已下載的內容群組互動時,在背景下載的資產。 這些檔案包含啟動應用程式不需要的任何其他檔案。 例如,您可以將 中的自動內容群組分成不同的層級,將每個層級定義為個別的內容群組。 如必要內容群組一節所述:由於 .NET 原生編譯,所有程式代碼(應用程式可執行檔)都必須是必要群組的一部分,讓資產和其他檔案可供自動群組使用。

讓我們進一步瞭解範例 SourceAppxContentGroupMap.xml 中的自動內容群組:

<Automatic>
    <ContentGroup Name="Level2">
        <File Name="Assets\Level2\*"/>
    </ContentGroup>
    <ContentGroup Name="Level3">
        <File Name="Assets\Level3\*"/>
    </ContentGroup>
</Automatic>

自動群組的配置與必要的群組相當類似,但有一些例外:

  • 有多個內容群組。
  • 自動內容群組可以有唯一的名稱,但保留給必要內容群組的名稱「必要」除外。
  • 自動內容群組不能包含 來自必要內容群組的任何 檔案。
  • 自動內容群組可以包含其他自動內容群組中的檔案。 檔案只會下載一次,而且會下載包含檔案的第一個自動內容群組。

使用通配符的 提示 和訣竅

內容群組對應的檔案配置一律與您的專案根資料夾相對。

在我們的範例中,這兩 <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 轉換內容群組對應:

  1. SourceAppxContentGroupMap.xml將 新增至您的項目資料夾
  2. 將 的 [建置動作SourceAppxContentGroupMap.xml] 變更為 屬性視窗 中的 “AppxSourceContentGroupMap”
  3. 以滑鼠右鍵按兩下方案總管中的專案
  4. 流覽至市集 -> 轉換內容群組對應檔案

如果您未在 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 使用之前,還有更多工作要做。 如需將串流安裝新增至應用程式的詳細資訊,請參閱 此頁面