Compartir a través de


Creación y conversión de una asignación de grupo de contenido de origen

Para preparar la aplicación para la instalación en streaming, deberás crear un mapa de grupo de contenido. Este artículo te 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 durante el proceso.

Creación del mapa del grupo de contenido de origen

Deberá crear un archivo SourceAppxContentGroupMap.xml 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 creando AppxContentGroupMap.xml desde cero, pero se recomienda (y generalmente más fácil) crearSourceAppxContentGroupMap.xml y convertirlo, ya que no se permiten caracteres comodín 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. Esto tardará mucho tiempo en descargarse de 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 la aplicación lo antes posible para que la segmentación de los archivos de la aplicación sea más sencilla.

En primer lugar, crearemos un archivo SourceAppxContentGroupMap.xml.

Antes de entrar en los detalles, este es un ejemplo de un archivo SourceAppxContentGroupMap.xml simple y completo:

<?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 en 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 requerido es un único grupo de contenido SourceAppxContentGroupMap.xml dentro del elemento <Required>. Un grupo de contenido necesario debe contener todos los archivos esenciales necesarios para iniciar la aplicación con la experiencia de usuario mínima. Debido a la compilación nativa de .NET, todo el código (el 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 que tener en cuenta algunas cosas importantes:

  • El elemento <ContentGroup> dentro del elemento <Required>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 de 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 archivo .exe único. 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 propiedad Content en true y la propiedad File Type en Archivo XML.

Al crear SourceAppxContentGroupMap.xml, resulta útil aprovechar el uso de caracteres comodín en nombres de archivo para obtener más información, consulta la sección Recomendaciones 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 incluir las demás carpetas que visual Studio genera. Los caracteres comodín Activos son seleccionar las imágenes Logo y SplashScreen necesarias para que se instale la aplicación.

Tenga en cuenta que no se 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 al formato 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 de 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 indica en la sección grupo de contenido necesario: debido a la compilación nativa de .NET, todo el código (el ejecutable de la aplicación) debe formar parte del grupo necesario, dejando activos y otros archivos para los grupos automáticos.

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

<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 "Required", que está reservado para el grupo de contenido necesario.
  • Los grupos de contenido automático 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ático. Los archivos se descargarán solo una vez y se descargarán con el primer grupo de contenido automático que los contiene.

Recomendaciones y trucos para usar caracteres comodín

El diseño de archivo para las asignaciones de grupos de contenido siempre es relativo a la carpeta raíz del proyecto.

En nuestro ejemplo, se usan caracteres comodín dentro de ambos elementos <ContentGroup> 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 utilizar caracteres comodín con texto para los 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 a 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. Añada el SourceAppxContentGroupMap.xml a la carpeta de su proyecto
  2. Cambie la acción de compilación de SourceAppxContentGroupMap.xmla "AppxSourceContentGroupMap" en el ventana Propiedades
  3. En el Explorador de soluciones, haga clic con el botón derecho en el proyecto.
  4. Vaya a Almacenamiento:> Convertir archivo de asignación de grupo de contenido

Si no ha desarrollado 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 sencillo comando MakeAppx.exe 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.xml, y /f especifica la ruta de acceso a AppxContentGroupMap.xml. La opción final, /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 necesitará para tener lista la versión final AppxContentGroupMap.xml de su aplicación. Todavía hay más que hacer antes de que la aplicación esté totalmente lista para 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.