Empaquetado de la aplicación

En Windows 8.1, gracias a los nuevos lotes de la aplicación, enviar aplicaciones es incluso más sencillo que antes. Y los paquetes de recursos te permiten ofrecer extras, como localización o activos para pantallas de alta resolución, a aquellos clientes que los quieren sin que esto afecte al espacio en disco, el ancho de banda y la experiencia de compra desde la aplicación para aquellos usuarios que no los quieren.

Para ver ejemplos específicos de cómo usar lotes de la aplicación para realizar una implementación de aplicaciones inteligente, consulta el tema sobre cómo empaquetar tu juego DirectX de la Tienda Windows en la muestra de juegos con paquetes de recursos.

Novedades o actualizaciones de Windows 8.1

  • Recursos de la aplicación
  • Agrupaciones de aplicaciones
  • Identidad del paquete
  • Implementación de agrupaciones de aplicaciones

Recursos de la aplicación

Windows 8.1 presenta un nuevo tipo de paquete en el modelo de aplicaciones. El paquete de recursos te permite separar el paquete de la aplicación básico de los recursos adicionales (por ejemplo, activos específicos de francés como cadenas o imágenes) e incluir esos recursos en su propio paquete. Por lo tanto, el paquete de recursos sirve para personalizar la experiencia global de la aplicación sin necesidad de descargar e instalar todos los paquetes de recursos en el equipo.

El paquete de recursos es opcional y no puede depender del paquete de la aplicación. Esto significa que el paquete de la aplicación debe contener al menos un conjunto de recursos predeterminados que siempre puede usarse en el caso de que no se haya instalado ningún paquete de recursos en el equipo. Esto ayuda a mantener un par de promesas clave:

  • El paquete de la aplicación siempre puede instalarse e iniciarse correctamente en cualquier equipo sin paquetes de recursos.

  • Si el paquete de recursos instalado no está completo, el paquete de la aplicación tiene recursos a los cuales se puede recurrir.

El paquete de recursos cumple con dos objetivos en el modelo de aplicaciones:

  • Proporcionar candidatos de recursos que el sistema de administración de recursos puede usar cuando se ejecuta la aplicación para personalizar la experiencia con esta.

  • Proporcionar metadatos que permiten que el paquete de recursos se dirija a un calificador de recursos específico (por ejemplo, escala de usuario, escala de sistema y características de Microsoft DirectX).

Los paquetes de recursos solo pueden dirigirse a un calificador de recursos por paquete. Sin embargo, tu aplicación puede tener muchos paquetes de recursos.

Agrupaciones de aplicaciones

Además del paquete de recursos, Windows 8.1 también presenta el lote de la aplicación (o paquete .appxbundle) para ayudar a optimizar el empaquetado y la distribución de una aplicación de la Tienda Windows y paquetes de recursos a usuarios de todo el mundo.

Tú eres el que crea la carga del paquete de aplicaciones de tu aplicación. Visual Studio creará y agregará el manifiesto del paquete. Cuando Microsoft Visual Studio Express 2013 para Windows empaqueta tu aplicación, automáticamente divide los recursos en paquetes separados y agrega los archivos de firma y de asignación de bloques de la aplicación al paquete. Los siguientes elementos componen una aplicación de la Tienda Windows completamente independiente que se puede implementar en sistemas a partir de Windows 8.1.

Paquetes de la aplicación (.appx)

La agrupación de aplicaciones puede contener más de un paquete de la aplicación solo si cada uno de ellos se destina a una arquitectura concreta diferente. Por ejemplo, puede contener tanto un paquete X86.appx como un paquete amd64.appx, pero no dos paquetes amd64.appx.

Paquetes de recursos (.appx)

El lote de la aplicación contiene paquetes de recursos (archivos .appx) para idioma, escala y nivel de característica DirectX. Cada lote de la aplicación puede contener muchos paquetes de recursos diferentes para admitir diferentes configuraciones de dispositivo. Cuando se hace referencia directa a un paquete de recursos en tu aplicación de la Tienda Windows, debes usar todo el sistema de administración de recursos.

Nota  Los paquetes de recursos nunca deben contener código.

Manifiesto de la agrupación de aplicaciones (AppxBundleManifest.xml

El manifiesto del lote de la aplicación (archivo .appxbundlemanifest) contiene toda la información de aplicabilidad acerca de los paquetes contenidos. Para cualquier paquete concreto, especifica el tipo de paquete ("Application" o "Resource"), además de la versión y la información de destino de recursos. Específicamente para paquetes de la aplicación, el manifiesto del lote de la aplicación contiene información acerca de la arquitectura.

En general, el manifiesto del lote de la aplicación permite que el modelo de aplicaciones de Windows 8.1 comprenda el contenido del lote de la aplicación y determine en el momento de la instalación qué paquete de la aplicación y paquete de recursos debe instalarse en el dispositivo del usuario.

Aquí tienes un ejemplo de un archivo de manifiesto del lote de la aplicación.

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Bundle xmlns="https://schemas.microsoft.com/appx/2013/bundle" SchemaVersion="1.0">
  <Identity Name="Example" Publisher="CN=ExamplePublisher" Version="2013.101.312.1053"/>
  <Packages>
    <Package Type="application" Version="1.0.0.5" Architecture="x86" FileName="AppPackage_X86.appx" Offset="49" Size="3207">
      <Resources>
        <Resource Language="en-us"/>
        <Resource Scale="100" />
      </Resources>
    </Package>
    <Package Type="application" Version="1.0.0.4" Architecture="x64" FileName="AppPackage_X64.appx" Offset="3329" Size="3204">
      <Resources>
        <Resource Language="en-us"/>
        <Resource Scale="100" />
      </Resources>
    </Package>
    <Package Type="resource" Version="1.0.0.0" ResourceId="French" FileName="ResourcePackage_French.appx" Offset="6606" Size="1423">
      <Resources>
        <Resource Language="fr"/>
        <Resource Language="fr-fr"/>
        <Resource Language="fr-ca"/>
      </Resources>
    </Package>
    <Package Type="resource" Version="1.0.0.3" ResourceId="HiRes" FileName="ResourcePackage_HiRes.appx" Offset="8111" Size="1584">
      <Resources>
        <Resource Scale="140"/>
      </Resources>
    </Package>
  </Packages>
</Bundle>

Asignación de bloques de la aplicación (AppxBlockMap.xml)

El archivo de asignación de bloques enumera todos los archivos de la agrupación (excepto los paquetes de la aplicación y de recursos), además de los valores hash criptográficos asociados que el sistema operativo utiliza para validar la integridad de los archivos y para optimizar una actualización de la aplicación. Para obtener más información sobre el archivo de asignación de bloques, consulta el artículo sobre la asignación de bloques del paquete de la aplicación.

Firma de aplicaciones (AppxSignature.p7x)

La firma del paquete de aplicaciones garantiza que el paquete y su contenido no se han modificado después de ser firmados. Si el certificado de firma se valida con un certificado de entidad de certificación raíz de confianza, la firma también identifica quién firmó el paquete. El firmante del paquete suele ser el editor o el autor de la aplicación.

Nota  Si quieres empaquetar tu aplicación manualmente, puedes usar las utilidades independientes MakeAppx y SignTool. Para aprender más acerca de cómo empaquetar e implementar aplicaciones de la Tienda Windows, consulta el tema sobre cómo empaquetar, implementar y consultar aplicaciones de la Tienda Windows.

Identidad del paquete

Al igual que con el paquete de la aplicación de Windows 8, uno de los elementos fundamentales del lote de la aplicación es la tupla de cinco partes que define el lote. Esto se conoce como identidad del paquete y consta de estos datos.

Propiedad Descripción
Nombre

Un nombre general que se usa para el paquete de la aplicación. Por ejemplo, "myCompany.mySuite.myApp".

Nota  Este nombre no es necesariamente el que se muestra en el icono de la aplicación.
Editor

El editor de la aplicación de la Tienda Windows. En la mayoría de los casos, el editor es el mismo que la cuenta utilizada para registrarse en una cuenta de desarrollador de Windows 8.

Versión

Un descriptor de versión con cuatro partes (principal.secundaria.compilación.revisión) que se utiliza para dar servicio a futuras versiones de la aplicación (por ejemplo, "1.0.0.0").

ProcessorArchitecture

Establecido en neutro de manera predeterminada.

ResourceID

Establecido en "~" de manera predeterminada.

 

Implementación de agrupaciones de aplicaciones

La implementación de lotes de la aplicación a través de la Tienda Windows sigue este flujo de trabajo.

Flujo de empaquetado de la aplicación

La implementación de la aplicación de la Tienda Windows se realiza en varias fases. Inicialmente, Windows 8.1 adquiere y valida el manifiesto del lote de la aplicación, la asignación de bloques de lote y la firma del lote. Después, Windows 8.1 comprueba el manifiesto del lote para asegurarse de que haya una aplicación que pueda implementarse en la arquitectura actual. Cuando se encuentra el paquete de la aplicación correcto, Windows 8.1 comprueba los criterios de implementación del paquete de la aplicación para asegurarse de que la implementación de la aplicación será correcta.

A continuación, Windows 8.1 determina el subconjunto de paquetes de recursos aplicables en la implementación y realiza una copia intermedia de los binarios del paquete en el directorio \WindowsApps\. Finalmente, Windows 8.1 registra el paquete de la aplicación y los paquetes de recursos en la cuenta del usuario.

Validación

Después de que el usuario inicie la instalación de una aplicación de la Tienda Windows, Windows 8.1 debe realizar estas comprobaciones para que la implementación pueda comenzar.

Prueba Condiciones

Compatibilidad de arquitectura

El lote puede contener hasta tres paquetes de la aplicación específicos de la arquitectura, todos ellos especificados en el manifiesto del lote de la aplicación.

Versión mínima del sistema operativo

Los requisitos previos se especifican en el manifiesto del paquete de la aplicación. Expresan el requisito de que haya una versión mínima específica del sistema operativo. Por ejemplo, el número de versión adecuada para Windows 8.1 es 6.3. Para obtener más información sobre los requisitos previos de la aplicación, consulta los requisitos previos para el empaquetado de aplicaciones.

Dependencias de aplicaciones

Las aplicaciones de la Tienda Windows pueden expresar una dependencia de otro paquete de componente para obtener funcionalidad adicional que necesite la aplicación. Para obtener más información acerca de las dependencias de aplicaciones, consulta el tema sobre las dependencias de empaquetado de aplicaciones.

Espacio en disco

Cada aplicación de la Tienda Windows requiere una determinada cantidad de espacio en disco para la implementación. Si no hay suficiente espacio en disco para implementar el paquete, la implementación no se realiza.

Comprobación de firmas

Se debe comprobar la integridad de cada uno de los archivos del paquete de la aplicación con respecto al BlockMap ya validado.

 

Aplicabilidad del paquete

Después de que Windows 8.1 compruebe que el lote de la aplicación se puede implementar en el sistema, determina los paquetes de recursos que deben implementarse junto con el paquete de la aplicación para mejorar la experiencia del usuario. La aplicabilidad se comprueba basándose en estos tres calificadores de recursos específicos.

Calificador Descripción

Idioma del usuario

Los idiomas que el usuario haya agregado a su lista de idiomas preferidos se tendrán en cuenta en el conjunto final de paquetes de recursos de idiomas aplicables que se van a implementar. Windows 8.1 admite muchas configuraciones regionales e idiomas para los paquetes de recursos.

Escala del sistema

Los valores de escala para todos los monitores se usan para determinar el conjunto final de paquetes de recursos de escala aplicables que se van a implementar. Windows 8.1 admite tres factores de escala para paquetes de recursos: scale-100, scale-140 y scale-180.

Nivel de característica de DirectX

Todos los niveles de característica de DirectX disponibles en el sistema se usarán para determinar el conjunto final de paquetes de recursos de DirectX aplicables que se van a implementar. Windows 8.1 admite tres niveles de característica de DirectX para paquetes de recursos: DXFL-DX9, DXFL-DX10 y DXFL-DX11.

 

Copia intermedia del paquete

Después de que Windows 8.1 determine que el lote de la aplicación puede implementarse en el sistema y los paquetes que hay que implementar, el contenido del paquete se descarga en el directorio \WindowsApps\. Se crea un nuevo directorio para cada paquete descargado y se le asigna un nombre creado a partir del valor de nombre de identidad del paquete, como en el ejemplo siguiente.

<Package Name>_<Version>_<Architecture>_<ResourceID>_<Publisher Hash>

El proceso de copia intermedia se produce mediante un conjunto de solicitudes que realiza el motor de implementación al origen de la ubicación del paquete. El origen responde a estas solicitudes, que se devuelven al motor de implementación una vez descomprimidas, se validan con el archivo BlockMap y se copian en el archivo apropiado.

Registro del paquete

El registro del paquete es la fase final del proceso de implementación. Durante esta fase, se producen dos operaciones clave:

  • Las extensiones que se declaran en el manifiesto del paquete de la aplicación se registran en el sistema operativo. Esto permite que la aplicación se integre estrechamente en el sistema operativo. Por ejemplo, si quieres que tu aplicación pueda abrir archivos de texto (.txt), declara una extensión FileTypeAssociation como XML en tu manifiesto del paquete de la aplicación y especifica ".txt" como tipo de archivo.

    En el momento de la implementación, este XML se traduce al conjunto de cambios del sistema necesarios para registrar correctamente la aplicación para que pueda administrar archivos .txt. El modelo de aplicaciones realiza entonces estos cambios en nombre de la aplicación. El modelo de aplicaciones admite muchas extensiones diferentes. Para obtener más información acerca de estas extensiones, consulta el tema sobre las extensiones y contratos para aplicaciones.

  • Todos los paquetes de recursos se registran con el sistema de administración de recursos. Este sistema puede usarlos para optimizar la experiencia del usuario cuando se ejecuta la aplicación.