Поделиться через


Создание и преобразование карты группы содержимого источника

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

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

Необходимо создать 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 File.

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

Обратите внимание, что вы не можете использовать двойной подстановочный знак "**" в корне структуры файлов, чтобы включить все файлы в проект, так как это вызовет ошибку при попытке преобразовать 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. Измените параметр «Build Action» элемента 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, все еще предстоит сделать еще больше. Дополнительные сведения о добавлении потоковой установки в приложение см. на этой странице.