Identidad persistente de MSIX

Esta característica permite firmar paquetes con un nuevo certificado mientras se mantiene la experiencia de actualización de la aplicación. En otras palabras, esto permite que el paquete conserve su identidad de paquete anterior en la plataforma sin tener que firmar con el certificado antiguo (original). A partir Windows Insider Preview compilación 22000, será necesario crear un artefacto para mostrar la relación entre el certificado antiguo y el nuevo certificado que se usa para firmar. A continuación se muestra una explicación paso a paso de cómo conservar la identidad del paquete para mantener la experiencia de actualización.

Requisitos

  • Obtenga MakeAppx.exe a través del SDK Windows. Esta característica está disponible actualmente en Windows SDK Preview 22000
  • Obtenga SignTool.exe a través del SDK Windows. Esta característica está disponible actualmente en Windows SDK Preview 22000
  • El certificado antiguo (CN=Old) que se usó para firmar el paquete original
  • El nuevo certificado (CN=New) que se usará para firmar el paquete

Tutorial

Se trata de una instrucción paso a paso sobre cómo firmar el paquete con el nuevo certificado mientras se mantiene la identidad del paquete.

Creación del artefacto

  1. Escriba el artefacto XML que detalla los publicadores antiguos y nuevos. Así lo que quiera, artifact.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Publisher xmlns="http://schemas.microsoft.com/appx/publisherbridging/2021" Old="CN=Old" New="CN=New" />
  1. Escriba un archivo de definición de catálogo (CDF) para crear el catálogo que se usará para firmar el artefacto. Así mismo, asigne el nombre que quiera, artifact.cdf:
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256

[CatalogFiles]
<HASH>artifact.xml=artifact.xml
  1. Ejecute makecat.exe en esta CDF. Creará el archivo especificado en él.
makecat.exe artifact.cdf
  1. Firmar el catálogo con el certificado antiguo
signtool.exe sign /f old-cert.pfx /fd SHA256 artifact.cat

En este momento, solo tiene que mantener los archivos XML y CAT después de esto. Puede crear varios artefactos, pero la plataforma admite actualmente hasta 5.

Nota

Se recomienda crear marcas de tiempo en el archivo de catálogo. Si el catálogo no tiene marca de tiempo, el artefacto deja de ser útil en el momento en que expira el certificado antiguo.

Creación del paquete

  1. Cree un archivo de puente del publicador para makeappx.exe qué artefactos usar. Este archivo es como el archivo de asignación. Así lo que quiera, artifacts.txt
[PublisherBridging]
"artifact.xml" "artifact.cat"

Cada línea debe contener un par de rutas de acceso de archivo XML y CAT. Los artefactos se deben ordenar a medida que se aplican. Si tiene dos artefactos, uno para Publisher1-Publisher2> y otro para Publisher2-Publisher3>, primero debe enumerar el de Publisher1-Publisher2>.

  1. Llame makeappx.exe con la marca /pb para que apunte al archivo de puente del publicador:
makeappx.exe pack /p app.msix /d .\app\ /pb artifacts.txt
  1. Firmar el paquete con el nuevo certificado
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix

Ahora tiene un paquete que tiene los artefactos almacenados en él y que se han firmado con el nuevo certificado. Puede implementar el paquete como cualquier otro paquete MSIX.

Consideraciones

  • Se recomienda que el catálogo tenga marca de tiempo. Para ello, deberá agregar estos argumentos en la llamada a signtool antes de la ruta de acceso al catálogo: /td SHA256 /tr

  • Tendrá que instalar el certificado antiguo (recomendado con marca de tiempo) en la máquina para que la plataforma instale el paquete firmado por el nuevo certificado.

  • Para aprovechar esta característica, deberá hacerlo antes de que el certificado antiguo haya expirado.

  • Esta característica funciona tanto para paquetes MSIX como para paquetes MSIX.