Compartir a través de


Actualizaciones diferenciales para paquetes de la aplicación MSIX

Descripción de las actualizaciones del paquete de la aplicación MSIX

Cuando se crea un paquete de aplicación MSIX, se genera un archivo de manifiesto con los detalles relacionados con los archivos incluidos en el paquete de la aplicación MSIX. Durante la creación del paquete, se crea un fragmento de metadatos y se almacena en el paquete .msix o .msixbundle, que permite que las partes del paquete se identifiquen de forma única mediante Windows. Más adelante, durante la actualización, Windows puede usar este archivo de metadatos para comparar el paquete antiguo con el nuevo y determinar qué se debe descargar en el dispositivo. Dado que estos metadatos permiten identificar de forma única las partes del paquete, esto significa que la maquinaria de actualización diferencial funciona plenamente desde cualquier versión de un paquete a cualquier otra (siempre que el paquete de origen tenga una versión inferior a la del paquete de destino).

Todo comienza en el archivo AppxBlockMap.xml (los metadatos mencionados anteriormente). El archivo AppxBlockMap.xml es un documento XML que contiene una lista bidimensional de información sobre los archivos del paquete. La primera dimensión presenta detalles de alto nivel en el archivo (por ejemplo, el nombre y el tamaño) y la segunda dimensión proporciona representaciones hash SHA2-256 de cada porción de 64 KB de ese archivo (también conocido como "bloque").

El primer hash representa el primer bloque de 64 KB del archivo y el segundo hash representa los 35 KB restantes, dado que el archivo tiene 101 188 bytes.

Durante una actualización, si se modifica el segundo bloque de ese archivo, el hash también se actualiza para reflejarlo. El componente de descarga es consciente de esto y extraerá el segundo bloque y reutilizará el primer bloque no modificado del paquete antiguo.

Además, si un archivo completo no ha cambiado (lo cual está determinado por el conjunto completo de bloques que no cambian), ese archivo se puede volver a utilizar desde el paquete existente, lo que da como resultado un gran ahorro para los usuarios de Windows 10

Actualizar a versiones más recientes

Cuando se instala una versión más reciente del paquete de la aplicación MSIX, se compara el archivo de manifiesto y se identifican los bloques de archivos modificados. A medida que el paquete de la aplicación MSIX se actualiza a la versión más reciente, solo se recuperan los archivos modificados, lo que reduce el consumo de ancho de banda si las aplicaciones actualizadas residen en un recurso compartido de red o fuera de una organización.

Actualizar a versiones anteriores

Cuando se instala una versión más antigua del paquete de la aplicación MSIX, se compara el archivo de manifiesto y se identifican los bloques de archivos modificados. A medida que el paquete de la aplicación MSIX se actualiza a la versión más antigua, solo se recuperan los archivos modificados, lo que reduce el consumo de ancho de banda si las aplicaciones actualizadas residen en un recurso compartido de red o fuera de una organización.

Optimizar experiencias de actualización

La entrega o instalación de un paquete de la aplicación MSIX en un dispositivo se puede configurar para mejorar la experiencia de los usuarios. Cuando se implementa una aplicación, el dispositivo puede configurarse para actualizar la aplicación después de que el usuario cierre la aplicación, o bien forzar el cierre de la aplicación y actualizarla de manera forzosa.

PowerShell

La instalación de un paquete de la aplicación MSIX en un dispositivo mediante PowerShell aprovecha el cmdlet add-appxpackage. Este cmdlet contiene los siguientes parámetros que modifican la instalación del paquete de la aplicación MSIX o mejoran la experiencia del usuario.

Parámetro Descripción
-DeferRegistrationWhenPackagesAreInUse Indica que este cmdlet impedirá que el paquete de la aplicación MSIX se actualice mientras el usuario tenga la aplicación abierta.
-ForceApplicationShutdown Indica que este cmdlet obliga a que se cierren todos los procesos activos asociados al paquete o sus dependencias
-ForceUpdateFromAnyVersion Indica que el paquete de la aplicación MSIX forzará que se registre o se realice una copia intermedia de una versión específica de un paquete, independientemente de si una versión superior ya está registrada o de si ya se realizó una copia intermedia.
-InstallAllResources Indica que el cmdlet fuerza la implementación de todos los paquetes de recursos especificados a partir del argumento de un lote. Esto invalida la comprobación de aplicabilidad de recursos del motor de implementación y fuerza la creación de una copia intermedia de todos los paquetes de recursos.
-RetainFilesOnFailure En el caso de una implementación fallida, si este modificador se establece en True, los archivos que se han creado en el equipo de destino durante el proceso de instalación no se eliminan.
-Update Especifica que el paquete que se va a agregar es una actualización de paquete de dependencia. Un paquete de dependencia se elimina cuando se elimina la aplicación principal. Si no se especifica, el paquete no se eliminará cuando se elimine la aplicación principal.

Para obtener una lista completa de los parámetros disponibles para este cmdlet, visita el artículo de PowerShell sobre add-appxpackage.