Создание и преобразование исходного файла сопоставления группы содержимого

Чтобы подготовить приложение к установке потоковой передачи, необходимо создать карту группы контента. В этой статье вы узнаете, как создавать и преобразовывать карту группы контента, предоставляя некоторые советы и рекомендации по пути.

Создание карты исходной группы содержимого

Вам потребуется создать SourceAppxContentGroupMap.xml файл, а затем использовать Visual Studio или средство MakeAppx.exe для преобразования этого файла в окончательную версию: AppxContentGroupMap.xml Можно пропустить шаг, создав AppxContentGroupMap.xml с нуля, но рекомендуется (и, как правило, проще) создать SourceAppxContentGroupMap.xml и преобразовать его, так как дикие карта не разрешены в AppxContentGroupMap.xml (и они действительно полезны).

Давайте рассмотрим простой сценарий, когда установка потоковой передачи приложений полезна.

Предположим, вы создали игру, но размер окончательного приложения составляет более 100 ГБ. Это займет много времени, чтобы скачать из 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>

Существует два основных компонента карты группы содержимого: обязательный раздел, содержащий требуемую группу контента, и автоматический раздел, который может содержать несколько автоматических групп контента.

Требуемая группа содержимого

Требуемая группа контента — это отдельная группа содержимого в <Required> элементе SourceAppxContentGroupMap.xmlэлемента . Требуемая группа контента должна содержать все необходимые файлы, необходимые для запуска приложения с минимальным взаимодействием с пользователем. Из-за компиляции .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шаблона полезно воспользоваться использованием wild карта s в именах файлов, дополнительные сведения см. в разделе Советы и рекомендации по использованию wild карта s.

Если вы разработали приложение с помощью 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 Native весь код (исполняемый файл приложения) должен быть частью требуемой группы, оставляя ресурсы и другие файлы для автоматических групп.

Давайте рассмотрим группу автоматического содержимого из нашего 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>

Вы также можете использовать дикие карта с текстом для имен файлов. Например, если вы хотите включить каждый файл в папку "Активы" с именем файла, содержащим "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.xmlAppxSourceContentGroupMap в окно свойств
  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 указывает, какой каталог следует использовать для расширения имени файла wild карта s, в данном случае это каталог проекта приложения.

Дополнительные сведения о параметрах, которые можно использовать с MakeAppx.exe, откройте командную строку, перейдите к MakeAppx.exe и введите:

MakeAppx convertCGM /?

Это все, что вам потребуется, чтобы получить окончательный AppxContentGroupMap.xml готовый к вашему приложению! Прежде чем приложение полностью готово к работе в Microsoft Store, все еще предстоит сделать еще больше. Дополнительные сведения о добавлении потоковой установки в приложение проверка этой странице.