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 a la vez que proporciona algunas sugerencias y trucos a lo largo del proceso.

Creación de la asignación del grupo de contenido de origen

Tendrá que crear un archivo y, a continuación, usar Visual Studio o la herramientaMakeAppx.exepara convertir este archivo a SourceAppxContentGroupMap.xml la versión final: SourceAppxContentGroupMap.xmlAppxContentGroupMap.xml . Es posible omitir un paso mediante la creación de desde cero, pero se recomienda (y, por lo general, más fácil) crear y convertirlo, ya que no se permiten caracteres comodín en (y son realmente AppxContentGroupMap.xmlSourceAppxContentGroupMap.xmlAppxContentGroupMap.xml útiles).

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

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

Nota

El uso de la instalación de streaming de aplicaciones depende en gran medida de la organización de archivos de la aplicación. Se recomienda que piense en el diseño de contenido de la aplicación con respecto a la instalación de streaming de aplicaciones lo antes posible para facilitar la segmentación de los archivos de la aplicación.

En primer lugar, vamos a crear un SourceAppxContentGroupMap.xml archivo.

Antes de entrar en los detalles, este es un ejemplo de un archivo simple y SourceAppxContentGroupMap.xml 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 para una asignación 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 requerido

El grupo de contenido necesario es un único grupo de contenido dentro <Required> del 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 (el ejecutable de la aplicación) debe formar parte del grupo necesario, dejando los recursos 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 de nuestro archivo SourceAppxContentGroupMap.xml de ejemplo original:

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

Hay algunas cosas importantes que hay que tener en cuenta aquí:

  • El <ContentGroup> elemento dentro del elemento <Required><ContentGroup> denominarse "Required". Este nombre está reservado solo para el grupo de contenido necesario y no se puede usar con ningún otro en <ContentGroup> la asignación final del grupo de contenido.
  • 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 el editor de texto favorito, hacer una rápida "Guardar como" del archivo en la carpeta del proyecto de la aplicación y nombrar el archivo recién creado: SourceAppxContentGroupMap.xml .

Importante

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

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

Si ha desarrollado la aplicación 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 único nombre de archivo comodín se incluirán los archivos agregados al directorio del proyecto desde Visual Studio, como el archivo ejecutable de la aplicación o los archivos DLL. Las carpetas WinMetadata y Properties deben incluir las demás carpetas Visual Studio genera. Los caracteres comodín Assets (Recursos) son para seleccionar las imágenes Logo (Logotipo) y SplashScreen (Pantalla de presentación) necesarias para que se instale la aplicación.

Tenga en cuenta que no puede usar el doble comodín, "**", 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 al SourceAppxContentGroupMap.xmlAppxContentGroupMap.xml final.

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

Grupos de contenido automáticos

Los grupos de contenido automáticos 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 los grupos de contenido automáticos en en distintos niveles, definiendo cada nivel como un grupo de contenido independiente. Como se indicó en la sección grupo de contenido necesario: debido .NET Native la compilación, todo el código (el ejecutable de la aplicación) debe formar parte del grupo necesario, dejando 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áticos 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 archivos 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 contenga.

Sugerencias 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, los caracteres comodín se usan dentro de ambos elementos para recuperar todos los archivos dentro de un nivel de archivo <ContentGroup> 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 los nombres de archivo. Por ejemplo, si desea incluir todos los archivos de 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 la versión final, , puede usar Visual Studio SourceAppxContentGroupMap.xmlAppxContentGroupMap.xml 2017 SourceAppxContentGroupMap.xml o laMakeAppx.exelínea de comandos.

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

  1. Agregar a SourceAppxContentGroupMap.xml la carpeta del proyecto
  2. Cambie la acción de compilación SourceAppxContentGroupMap.xml de por "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 (Almacén: 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 herramientaMakeAppx.exepara convertir .

Un comando MakeAppx.exe simple podría tener un aspecto parecido 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 los 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 conMakeAppx.exe, abra un símbolo del sistema, vaya a MakeAppx.exe y escriba:

MakeAppx convertCGM /?

Eso es todo lo que necesitará para preparar la AppxContentGroupMap.xml aplicación. Todavía queda mucho por hacer antes de que la aplicación esté totalmente lista para el Microsoft Store. Para obtener más información sobre el proceso completo de agregar la instalación de streaming a la aplicación, consulte esta entrada de blog.