Personalización de las aplicaciones empresariales con paquetes de modificaciónCustomize your Enterprise apps with modification packages

La capacidad de personalizar la experiencia de una aplicación es importante, especialmente en el caso de las empresas.The ability to customize an application's experience is important, especially for enterprises. Hemos hablado a los profesionales de ti y sabemos que la personalización de aplicaciones para satisfacer las necesidades de los usuarios es esencial para el esfuerzo de pasar a Windows 10.We’ve spoken to IT professionals and we know that customizing applications to meet their user's needs is essential to the effort of moving to Windows 10. Al personalizar las aplicaciones que se empaquetan con 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.When customizing applications that are packaged using MSI, it is well understood that IT professionals must acquire the package from the developers and re-package the installer with the customization to suit their needs. Este es un esfuerzo costoso para empresas.This is a costly effort for enterprises. Avanzando, queremos desacoplar la personalización y la aplicación principal para que ya no se necesite volver a empaquetar.Moving forward, we want to decouple the customization and the main application so that re-packaging is no longer needed. Esto garantiza que las empresas obtienen las actualizaciones más recientes de los desarrolladores a la vez que mantienen el control de sus personalizaciones.This ensures that enterprises get the latest updates from developers while still maintaining control of their customizations.

En la versión 1809 de Windows 10, se presentó un nuevo tipo de paquete MSIX denominado paquete de modificación.In Windows 10, version 1809, we introduced a new type of MSIX package called a modification package. Los paquetes de modificación son paquetes de MSIX que almacenan las personalizaciones.Modification packages are MSIX packages that store customizations. Los paquetes de modificación también pueden ser complementos/complementos que pueden no tener un punto de activación.Modification packages can also be plugins/add-ons that may not have an activation point. Los profesionales de TI pueden usar esta característica para cambiar de forma flexible los contenedores de MSIX de modo que las aplicaciones se superpongan según las personalizaciones de su empresa.IT professionals can use this feature to flexibly change MSIX containers so that applications are overlaid by their enterprise's customizations.

FuncionamientoHow it works

Los paquetes de modificación están diseñados para empresas que no poseen el código de la aplicación y que solo tienen el instalador.Modification packages are designed for enterprises that do not own the code of the application and only have the installer. Puede crear un paquete de modificación con la versión más reciente de la herramienta de empaquetado de MSIX (para Windows 10 versión 1809 o posterior).You can create a modification package by using the latest version of the MSIX packaging tool (for Windows 10 version 1809 or later). Si tiene el código para la aplicación, también puede crear una extensión de aplicación.If you have the code for the application, you can alternatively create an app extension.

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.If you want to create a modification package that has a strict binding to the main app, you can declare the main app as a dependency in the modification package’s manifest.

<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 un publicador diferente.The following example demonstrates how to specify a different certificate or publisher.

<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 simple si la relación entre el paquete de modificación y el paquete principal es de uno a uno.This is a simple configuration if the relationship between the modification package and main package is one-to-one. Las personalizaciones típicas suelen requerir claves del registro en HKEY_CURRENT_USER o HKEY_CURRENT_USERCLASS.Typical customizations often require registry keys under HKEY_CURRENT_USER or HKEY_CURRENT_USERCLASS. Dentro de nuestro paquete MSIX tenemos los archivos User. dat y userclass. dat para capturar las claves del registro.Inside our MSIX package we have User.dat and Userclass.dat files to capture the registry keys. Tendrá que crear User. DAT si necesita claves del registro en HKCU\Software * (al igual que Registry. dat se usa para HKLM\Software * ).You will need to create User.dat if you need registry keys under HKCU\Software* (just like Registry.dat is used for HKLM\Software*). Use userclass. DAT si necesita claves en HKCU\Sofware\Classes * .Use Userclass.dat if you need keys under HKCU\Sofware\Classes*.

Estas son las formas típicas de crear un archivo. dat:Here are the typical ways to create a .dat file:

  • Use regedit para crear un archivo.Use Regedit to create a file. Cree un subárbol en regedit e inserte las claves necesarias.Create a hive in Regedit and insert the necessary keys. Que hacer clic con el botón derecho, exportar y guardar como archivo de Hive.Than right click, export and save-as hive file. Asegúrese de asignar un nombre al archivo User. dat o userclass. dat.Make sure to name the file either User.dat or Userclass.dat

  • Use una API para crear los archivos necesarios.Use an API to create necessary files. Puede usar la función ORSaveHive para guardar un archivo. dat.You can use the ORSaveHive function to save a .dat file. Asegúrese de asignar un nombre al archivo ether User. dat o userclass. dat.Make sure to name the file ether User.dat or Userclass.dat

Una vez realizados los cambios necesarios, puede crear el paquete de modificación como cualquier otro paquete de MSIX.After you’ve made the necessary changes, you can create the modification package like any other MSIX package. Después, puede implementar el paquete con la configuración de implementación actual.Then you can deploy the package with the current deployment set-up. Al volver a iniciar la aplicación principal, puede ver los cambios que ha realizado el paquete de modificación.When you relaunch your main app, you can see the changes that the modification package has made. Si decide quitar el paquete de modificación, la aplicación principal revertirá a un estado sin el paquete de modificación.If you choose to remove the modification package, your main app will revert to a state without the modification package.

Averiguar qué paquetes de modificación están instalados en el dispositivoFind out what modification packages are installed on your device

Con PowerShell, puede ver los paquetes de modificación instalados con el siguiente comando.Using PowerShell, you can see installed modification packages using the following command.

Get-AppPackage -PackageTypeFilter Optional

Paquetes de modificación en Windows 10, versión 1809Modification packages on Windows 10, version 1809

En Windows 10, versión 1809, los paquetes de modificación pueden incluir configuraciones necesarias para que se establezcan en el registro de modo que el paquete principal se ejecute según lo previsto.On Windows 10, version 1809, modification packages can include configurations needed to be set in the registry such that the main package will run as expected. Es decir, la aplicación principal aprovecha el registro para ver si existe un complemento.Meaning your main application leverages the registry to view whether a plug-in exists. 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.When you deploy the main package and the modification package, at runtime the application will view the virtual registry (VREG) of both the main package and the modification package.

Ten en cuenta que el paquete principal puede utilizar el Registro virtual para las siguientes acciones:Note that your main package may be using the VREG to do the following things:

  • Ver dónde cargar el archivo (la DLL) del complemento.Viewing where to load the file (the DLL) of the plug-in. En este caso, asegúrate de que el archivo forma parte del paquete.If this is the case, then ensure that the file is part of the package. Así, el paquete principal podrá acceder al archivo en tiempo de ejecución.By doing this, main package is able to access the file at runtime.
  • Consultar dónde se puede ver el valor de las claves de VREG.Viewing where to see the value of the VREG keys. Es posible que el paquete principal necesite que exista un valor en el Registro virtual.Your main package may be looking for a value to exist in the VREG. Al crear el paquete de modificación, ya sea manualmente o mediante nuestra herramienta, asegúrate de que el valor es correcto.When you create your modification package either by hand or using our tool, ensure that the value is correct.

Paquetes de modificación en Windows 10, versión 1903 y versiones posterioresModification packages on Windows 10, version 1903, and later

Se agregaron las siguientes características a la versión 1903 de Windows 10.The following features were added to Windows 10, version 1903.

Actualización del manifiestoManifest update

Hemos agregado compatibilidad para el siguiente elemento al manifiesto del paquete de modificación de MSIX.We’ve added support for the following element to the MSIX modification package’s manifest.

<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.To ensure that modification packages work in version 1903 or later, the modification package's manifest must include this element. 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.This will be done for you if you package your MSIX modification package using the January release of the 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.If you've converted a package using our tool prior to the release, you can edit your existing package in our tool to add this new element. Además, si los usuarios instalan el paquete de modificación, se les avisará de que el paquete puede modificar la aplicación principal.In addition, if users install the modification package, they will be alerted that the package may modify the main application.

Si usa un paquete de modificación creado antes de la versión 1903, es necesario editar el manifiesto del paquete para actualizar el MaxVersionTested atributo a 10.0.18362.0.If you are using a modification package that was created before version 1903, it is necessary to edit the package manifest to update the MaxVersionTested attribute to 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 ToolCreate a modification package using the MSIX Packaging Tool

Puedes crear un paquete de modificación con la herramienta MSIX Packaging Tool:You can create a modification package with the MSIX Packaging Tool:

  • Especifica el paquete principal.Specify the main package. Asegúrate de que la versión MSIX del paquete principal está disponible en el equipo en el que realizas la conversión.Be sure to have the MSIX version of your main package available on your machine that you are converting on. En caso contrario, te pediremos que indiques manualmente la información del publicador y la aplicación principal.If not than we will ask you to manually provide the publisher and main application information. Alguna personalización también necesita que la aplicación principal esté instalada en el equipo.Also some customization require that your main application is installed on your machine. Paquete de modificación de MPTModification Package MPT

  • Modifica el paquete después de que haya pasado por la conversión con el editor de paquetes.Modify the package once it has gone through conversion using the package editor. Puede que el paquete principal precise que el paquete de modificación incluya determinados valores en su Registro virtual.There may be a case where the main package requires your modification package to have certain values in their VREG. En este caso, editarías el paquete según sea necesario.This is where you would go and edit the package appropriately.

Creación de un paquete de modificación con MakeAppx.exeCreate a modification package using MakeAppx.exe

Puede crear un paquete de modificación manualmente mediante la herramienta de MakeAppX.exe que se incluye en el SDK de Windows 10.You can create a modification package manually by using the MakeAppX.exe tool that is included in the Windows 10 SDK.

  • En el manifiesto, especifica el paquete principal.In the manifest, specify the main package. Incluye el publicador y el nombre del paquete principal.Include the publisher and the main package name.

    <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.Create Registry.dat, User.dat and Userclass.dat to create whatever registry keys are needed to load your modification package. Esto solo es preciso si necesitas que la aplicación principal vea claves del Registro personalizadas.This is only required if you need your main application to view custom registry keys. 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.Remember that since everything is running inside a container, at runtime the main package and the modification package virtual registry will merge such that main package can view the modification packages virtual registry.

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).This process also supports file system plug-ins and customizations, as long as the executable of the main application is not in a virtual file system (VFS). Esto permite garantizar que el paquete principal obtiene todos los sistemas de archivos virtuales del paquete principal y del paquete de modificación.This is to ensure that the main package will get all the VFS of the main package and the modification package.