Crear y convertir una asignación de grupo de contenido de origen

Para preparar la aplicación para la instalación de streaming, deberá crear un mapa de grupo de contenido. Este artículo le ayudará con los detalles de la creación y conversión de un mapa de grupo de contenido al tiempo que proporciona algunas sugerencias y trucos a lo largo del proceso.

Creación del mapa del grupo de contenido de origen

Deberá crear un SourceAppxContentGroupMap.xml archivo y, a continuación, usar Visual Studio o la herramienta MakeAppx.exe para convertir este archivo a la versión final: AppxContentGroupMap.xml. Es posible omitir un paso mediante la creación de desde AppxContentGroupMap.xml cero, pero se recomienda (y generalmente más fácil) crear SourceAppxContentGroupMap.xml y convertirlo, ya que los caracteres comodín no se permiten en AppxContentGroupMap.xml (y son realmente útiles).

Veamos un escenario sencillo en el que la instalación de streaming de aplicaciones es beneficiosa.

Supongamos que has creado un juego, pero el tamaño de la aplicación final es superior a 100 GB. Eso tardará mucho tiempo en descargarse de la Microsoft Store, lo que puede ser inconveniente. Si decide usar la instalación de streaming de aplicaciones, puede especificar el orden en el que se descargan los archivos de la aplicación. Al indicar a la Tienda que descargue primero los archivos esenciales, el usuario podrá interactuar con la aplicación antes mientras que otros archivos no esenciales se descargan en segundo plano.

Nota

El uso de la instalación de streaming de aplicaciones se basa en gran medida en la organización de archivos de la aplicación. Se recomienda pensar en el diseño de contenido de la aplicación con respecto a la instalación de streaming de aplicaciones tan pronto como sea posible para simplificar la segmentación de los archivos de la aplicación.

En primer lugar, crearemos un SourceAppxContentGroupMap.xml archivo.

Antes de entrar a los detalles, este es un ejemplo de un archivo simple y completo 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>

Hay dos componentes principales para un mapa de grupo de contenido: la sección necesaria , que contiene el grupo de contenido necesario y la sección automática , que puede contener varios grupos de contenido automáticos.

Grupo de contenido necesario

El grupo de contenido necesario es un único grupo de contenido dentro del <Required> elemento de SourceAppxContentGroupMap.xml. Un grupo de contenido necesario debe contener todos los archivos esenciales necesarios para iniciar la aplicación con la experiencia mínima del usuario. Debido a .NET Native compilación, todo el código (ejecutable de la aplicación) debe formar parte del grupo necesario, dejando activos y otros archivos para los grupos automáticos.

Por ejemplo, si la aplicación es un juego, el grupo necesario puede incluir archivos usados en el menú principal o en la pantalla principal del juego.

Este es el fragmento de código del archivo de ejemplo original SourceAppxContentGroupMap.xml :

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

Hay algunas cosas importantes que se deben tener en cuenta aquí:

  • El <ContentGroup> elemento dentro del <Required> elemento debe denominarse "Required". Este nombre está reservado solo para el grupo de contenido necesario y no se puede usar con ningún otro <ContentGroup> en la asignación del grupo de contenido final.
  • Solo hay un <ContentGroup>. Esto es intencionado, ya que solo debe haber un grupo de archivos esenciales.
  • El archivo de este ejemplo es un único .exe archivo. Un grupo de contenido necesario no está restringido a un archivo, puede haber varios.

Una manera fácil de empezar a escribir este archivo es abrir una nueva página en su editor de texto favorito, hacer una rápida "Guardar como" del archivo en la carpeta del proyecto de la aplicación y asignar un nombre al archivo recién creado: SourceAppxContentGroupMap.xml.

Importante

Si va a desarrollar una aplicación de C++, deberá ajustar las propiedades del archivo de SourceAppxContentGroupMap.xml. Establezca la Content propiedad en true y la File Type propiedad en Archivo XML.

Al crear , SourceAppxContentGroupMap.xmlresulta útil aprovechar el uso de caracteres comodín en nombres de archivo para obtener más información, consulte la sección Sugerencias y trucos para usar caracteres comodín.

Si desarrolló la aplicación con Visual Studio, se recomienda incluirla en el grupo de contenido necesario:

<File Name="*"/>
<File Name="WinMetadata\*"/>
<File Name="Properties\*"/>
<File Name="Assets\*Logo*"/>
<File Name="Assets\*SplashScreen*"/>

Al agregar el nombre de archivo comodín único se incluirán los archivos agregados al directorio del proyecto desde Visual Studio, como el ejecutable de la aplicación o los archivos DLL. Las carpetas WinMetadata y Properties son para incluir las demás carpetas Visual Studio genera. Los caracteres comodín Assets son seleccionar las imágenes Logo y SplashScreen necesarias para que se instale la aplicación.

Tenga en cuenta que no puede usar el carácter comodín doble, "**", en la raíz de la estructura de archivos para incluir todos los archivos del proyecto, ya que se producirá un error al intentar convertir SourceAppxContentGroupMap.xml en el final AppxContentGroupMap.xml.

También es importante tener en cuenta que los archivos de superficie (AppxManifest.xml, AppxSignature.p7x, resources.pri, etc.) no deben incluirse en el mapa del grupo de contenido. Si los archivos de superficie se incluyen en uno de los nombres de archivo comodín que especifique, se omitirán.

Grupos de contenido automático

Los grupos de contenido automático son los recursos que se descargan en segundo plano mientras el usuario interactúa con los grupos de contenido ya descargados. Contienen archivos adicionales que no son esenciales para iniciar la aplicación. Por ejemplo, podría dividir grupos de contenido automáticos en distintos niveles, definiendo cada nivel como un grupo de contenido independiente. Como se indicó en la sección grupo de contenido necesario: debido a .NET Native compilación, todo el código (el ejecutable de la aplicación) debe formar parte del grupo necesario, dejando los recursos y otros archivos para los grupos automáticos.

Echemos un vistazo más de cerca al grupo de contenido automático de nuestro SourceAppxContentGroupMap.xml ejemplo:

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

El diseño del grupo automático es bastante similar al grupo necesario, con algunas excepciones:

  • Hay varios grupos de contenido.
  • Los grupos de contenido automático pueden tener nombres únicos, excepto el nombre "Obligatorio", que está reservado para el grupo de contenido necesario.
  • Los grupos de contenido automáticos no pueden contener ningún archivo del grupo de contenido necesario.
  • Un grupo de contenido automático puede contener archivos que también están en otros grupos de contenido automáticos. Los archivos se descargarán solo una vez y se descargarán con el primer grupo de contenido automático que los contiene.

Sugerencias y trucos para usar caracteres comodín

El diseño de archivo de los mapas del grupo de contenido siempre es relativo a la carpeta raíz del proyecto.

En nuestro ejemplo, los caracteres comodín se usan dentro de ambos <ContentGroup> elementos para recuperar todos los archivos dentro de un nivel de archivo de "Assets\Level2" o "Assets\Level3". Si usa una estructura de carpetas más profunda, puede usar el carácter comodín doble:

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

También puede usar caracteres comodín con texto para nombres de archivo. Por ejemplo, si desea incluir todos los archivos en la carpeta "Assets" con un nombre de archivo que contenga "Level2", puede usar algo parecido a esto:

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

Convertir SourceAppxContentGroupMap.xml en AppxContentGroupMap.xml

Para convertir a SourceAppxContentGroupMap.xml la versión final, AppxContentGroupMap.xml, puede usar Visual Studio 2017 o la herramienta de línea de comandos MakeAppx.exe.

Para usar Visual Studio para convertir el mapa del grupo de contenido:

  1. Agregar a la carpeta del SourceAppxContentGroupMap.xml proyecto
  2. Cambie la acción de compilación de SourceAppxContentGroupMap.xmla "AppxSourceContentGroupMap" en el ventana Propiedades
  3. Haga clic con el botón derecho en el proyecto en el Explorador de soluciones.
  4. Vaya a Store-> Convert Content Group Map File (Almacenar: convertir el archivo de asignación de grupo de contenido)

Si no desarrolló la aplicación en Visual Studio, o si prefiere usar la línea de comandos, use la herramienta MakeAppx.exe para convertir SourceAppxContentGroupMap.xml.

Un comando deMakeAppx.exe simple podría tener un aspecto similar al siguiente:

MakeAppx convertCGM /s MyApp\SourceAppxContentGroupMap.xml /f MyApp\AppxContentGroupMap.xml /d MyApp\

La opción /s especifica la ruta de acceso a SourceAppxContentGroupMap.xmly /f especifica la ruta de acceso a AppxContentGroupMap.xml. La última opción, /d, especifica qué directorio se debe usar para expandir caracteres comodín de nombre de archivo; en este caso, es el directorio del proyecto de aplicación.

Para obtener más información sobre las opciones que puede usar con MakeAppx.exe, abra un símbolo del sistema, vaya a MakeAppx.exe y escriba:

MakeAppx convertCGM /?

¡Eso es todo lo que tendrás que preparar AppxContentGroupMap.xml para tu aplicación! Todavía hay más que hacer antes de que la aplicación esté totalmente lista para el Microsoft Store. Para obtener más información sobre cómo agregar la instalación de streaming a la aplicación, consulte esta página.