Personalización de las aplicaciones empresariales con paquetes de modificación

La capacidad de personalizar la experiencia de una aplicación es importante, especialmente para las empresas. Hemos hablado con profesionales de TI y sabemos que personalizar aplicaciones para satisfacer las necesidades de sus usuarios es esencial para el esfuerzo de pasar a Windows 10. Al personalizar las aplicaciones que se empaquetan mediante MSI, se entiende bien que los profesionales de TI deben adquirir el paquete de los desarrolladores y volver a empaquetar el instalador con la personalización para satisfacer sus necesidades. Este es un esfuerzo costoso para las empresas. Al avanzar, queremos desacoplar la personalización y la aplicación principal para que ya no se necesite volver a empaquetar. Esto garantiza que las empresas obtengan las actualizaciones más recientes de los desarrolladores a la vez que mantienen el control de sus personalizaciones.

En la versión 1809 de Windows 10 se introdujo un nuevo tipo de paquete MSIX denominado paquete de modificación. Los paquetes de modificación son paquetes MSIX que almacenan personalizaciones. Los paquetes de modificación también pueden ser plugins o complementos que pueden no tener un punto de activación. Los profesionales de TI pueden usar esta característica para cambiar flexiblemente los contenedores MSIX para que las aplicaciones se superen mediante las personalizaciones de empresa.

Funcionamiento

Los paquetes de modificación están diseñados para empresas que no poseen el código de la aplicación y solo tienen el instalador. Puede crear un paquete de modificación con la versión más reciente de la herramienta de empaquetado MSIX (para Windows 10 versión 1809 o posterior). Si tiene el código de la aplicación, también puede crear una extensión de aplicación.

Si desea crear un paquete de modificación que tenga un enlace estricto a la aplicación principal, puede declarar la aplicación principal como una dependencia en el manifiesto del paquete de modificación.

<Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
    <uap4:MainPackageDependency Name="Main.App"/>
</Dependencies>

En el ejemplo siguiente se muestra cómo especificar un certificado o publicador diferente.

<Dependencies>
    <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.15063.0"/>
    <uap4:MainPackageDependency Name="Main.App" Publisher="CN=Contoso, C=US" />
</Dependencies>

Se trata de una configuración sencilla si la relación entre el paquete de modificación y el paquete principal es uno a uno. Las personalizaciones típicas suelen requerir claves del Registro en HKEY_CURRENT_USER o HKEY_CURRENT_USERCLASS. Dentro de nuestro paquete MSIX tenemos archivos User.dat y Userclass.dat para capturar las claves del Registro. Deberá crear User.dat si necesita claves del Registro en HKCU\Software* (al igual que Registry.dat se usa para HKLM\Software*). Use Userclass.dat si necesita claves en HKCU\Sofware\Classes*.

Estas son las formas típicas de crear un archivo .dat:

  • Use Regedit para crear un archivo. Cree un subárbol en Regedit e inserte las claves necesarias. Que haga clic con el botón derecho, exporte y guarde como archivo de subárbol. Asegúrese de asignar un nombre al archivo User.dat o Userclass.dat.

  • Use una API para crear los archivos necesarios. Puede usar la función ORSaveHive para guardar un archivo .dat. Asegúrese de asignar un nombre al archivo ether User.dat o Userclass.dat.

Después de realizar los cambios necesarios, puede crear el paquete de modificación como cualquier otro paquete MSIX. A continuación, puede implementar el paquete con la configuración de implementación actual. Al volver a iniciar la aplicación principal, puede ver los cambios realizados en el paquete de modificación. Si decide quitar el paquete de modificación, la aplicación principal volverá a un estado sin el paquete de modificación.

Averigüe qué paquetes de modificación están instalados en el dispositivo

Con PowerShell, puede ver los paquetes de modificación instalados mediante el comando siguiente.

Get-AppPackage -PackageTypeFilter Optional

Paquetes de modificación en la versión 1809 de Windows 10

En Windows 10, versión 1809, los paquetes de modificación pueden incluir configuraciones que es necesario establecer en el registro para que el paquete principal se ejecute según lo previsto. Esto significa que la aplicación principal aprovecha el Registro para ver si existe un complemento. Al implementar el paquete principal y el paquete de modificación, la aplicación consultará en tiempo de ejecución el Registro virtual (VREG) tanto del paquete principal como del paquete de modificación.

Ten en cuenta que el paquete principal puede utilizar el Registro virtual para las siguientes acciones:

  • Visualización de dónde cargar el archivo (la DLL) del complemento. En este caso, asegúrate de que el archivo forma parte del paquete. Así, el paquete principal podrá acceder al archivo en tiempo de ejecución.
  • Consultar dónde se puede ver el valor de las claves de VREG. Es posible que el paquete principal necesite que exista un valor en el Registro virtual. Al crear el paquete de modificación, ya sea manualmente o mediante nuestra herramienta, asegúrate de que el valor es correcto.

Paquetes de modificación en la versión 1903 de Windows 10, y versiones posteriores

Se agregaron las siguientes características a la versión 1903 de Windows 10.

Actualización del manifiesto

Hemos agregado compatibilidad para el siguiente elemento al manifiesto del paquete de modificación de MSIX.

<Properties>
   <rescap6:ModificationPackage>true</rescap6:ModificationPackage>
</Properties>

Para asegurar que los paquetes de modificación funcionen en la versión 1903 o posterior, su manifiesto debe incluir este elemento. Esto se hará automáticamente si empaqueta su paquete de modificación de MSIX con la versión de enero de la herramienta MSIX Packaging Tool. Si has convertido un paquete con nuestra herramienta antes del lanzamiento, puedes editar el paquete existente en nuestra herramienta para agregar este nuevo elemento. Además, si los usuarios instalan el paquete de modificación, se les avisará de que el paquete puede modificar la aplicación principal.

Si utilizas un paquete de modificación creado antes de la versión 1903, es necesario editar el manifiesto del paquete para actualizar el atributo MaxVersionTested a 10.0.18362.0.

<TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17701.0" MaxVersionTested="10.0.18362.0" />

Creación de un paquete de modificación con la herramienta MSIX Packaging Tool

Puedes crear un paquete de modificación con la herramienta MSIX Packaging Tool:

  • Especifica el paquete principal. Asegúrate de que la versión MSIX del paquete principal está disponible en el equipo en el que realizas la conversión. En caso contrario, te pediremos que indiques manualmente la información del publicador y la aplicación principal. Alguna personalización también necesita que la aplicación principal esté instalada en el equipo. Modification Package MPT

  • Modifica el paquete después de que haya pasado por la conversión con el editor de paquetes. Puede que el paquete principal precise que el paquete de modificación incluya determinados valores en su Registro virtual. En este caso, editarías el paquete según sea necesario.

Creación de un paquete de modificación con MakeAppx.exe

Puedes crear un paquete de modificación manualmente mediante la herramienta MakeAppX.exe, que se incluye en el SDK de Windows 10:

  • En el manifiesto, especifica el paquete principal. Incluye el publicador y el nombre del paquete principal.

    <Dependencies>
      <TargetDeviceFamily Name="Windows.Desktop" MinVersion="10.0.17701.0" MaxVersionTested="12.0.0.0"/>
      <uap4:MainPackageDependency Name="HeadTrax" Publisher="CN=Contoso Software, O=Contoso Corporation, C=US" />
    </Dependencies>
    
  • Crea los archivos Registry.dat, User.dat y Userclass.dat, para crear las claves del Registro necesarias para cargar el paquete de modificación. Esto solo es preciso si necesitas que la aplicación principal vea claves del Registro personalizadas. Recuerda que, dado que todo se ejecuta dentro de un contenedor, el Registro virtual del paquete principal y del paquete de modificación se combinará en tiempo de ejecución, de modo que el paquete principal podrá ver el Registro virtual de los paquetes de modificación.

Este proceso también es compatible con complementos y personalizaciones del sistema de archivos, siempre que el archivo ejecutable de la aplicación principal no se encuentre en un sistema de archivos virtual (VFS). Esto permite garantizar que el paquete principal obtiene todos los sistemas de archivos virtuales del paquete principal y del paquete de modificación.

Instalación de paquetes de modificación en el equipo

La instalación de paquetes de modificación en el equipo sigue otras convenciones de instalación. Merece la pena tener en cuenta que es posible que desee usar el parámetro -OptionalPackagePath al instalar el paquete.

Resolución de conflictos

En el caso de varios paquetes de modificación que intentan cambiar el mismo valor, el conflicto se resuelve considerando el orden alfabético de los nombres de los paquetes de modificación.