Identité persistante MSIX

Cette fonctionnalité permet de signer des packages avec un nouveau certificat tout en conservant l’expérience de mise à jour de l’application. En d’autres termes, cela permet au package de conserver son ancienne identité de package dans la plateforme sans avoir à se connecter avec l’ancien certificat (d’origine). À compter de Windows Insider Preview Build 22000, un artefact doit être créé pour afficher la relation entre l’ancien certificat et le nouveau certificat utilisé pour la signature. Vous trouverez ci-dessous une explication détaillée de la façon de conserver l’identité du package pour maintenir l’expérience de mise à jour.

Spécifications

  • Obtenez MakeAppx.exe via le Kit de développement logiciel (SDK) Windows. Cette fonctionnalité est actuellement disponible dans le Kit de développement logiciel (SDK) Windows Preview 22000
  • Obtenez SignTool.exe via le Kit de développement logiciel (SDK) Windows. Cette fonctionnalité est actuellement disponible dans le Kit de développement logiciel (SDK) Windows Preview 22000
  • Ancien certificat (CN=Old) utilisé pour signer le package d’origine
  • Nouveau certificat (CN=New) qui sera utilisé pour signer le package

Procédure

Il s’agit d’une instruction pas à pas sur la façon de signer votre package avec le nouveau certificat tout en conservant l’identité du package.

Créer l’artefact

  1. Écrivez l’artefact XML détaillant les anciens et nouveaux éditeurs. Nommez-le comme vous le souhaitez, 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. Écrivez un fichier de définition de catalogue (CDF) pour créer le catalogue qui sera utilisé pour signer l’artefact. Nommez-le comme vous le souhaitez, artifact.cdf :
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256

[CatalogFiles]
<HASH>artifact.xml=artifact.xml
  1. Exécutez makecat.exe sur ce CDF. Il crée le fichier spécifié dans celui-ci
makecat.exe artifact.cdf
  1. Signer le catalogue à l’aide de l’ancien certificat
signtool.exe sign /f old-cert.pfx /fd SHA256 artifact.cat

À ce stade, vous devez uniquement conserver les fichiers XML et CAT après cela. Vous pouvez créer plusieurs artefacts, mais la plateforme prend actuellement en charge jusqu’à 5.

Remarque

Nous vous recommandons d’horodatager votre fichier catalogue. Si le catalogue n’est pas horodaté, l’artefact devient inutile le moment où l’ancien certificat expire.

Créer le package

  1. Créez un fichier de pontage d’éditeur pour indiquer à makeappx.exe quels artefacts utiliser. Ce fichier est semblable au fichier de mappage. Nommez-le tout ce que vous aimez, artifacts.txt
[PublisherBridging]
"artifact.xml" "artifact.cat"

Chaque ligne doit contenir une paire de chemins de fichier XML et CAT. Les artefacts doivent être classés à mesure qu’ils sont appliqués. Si vous avez deux artefacts pour aller Publisher1-Publisher2> et un autre pour Publisher2-Publisher3>, vous devez d’abord répertorier celui pour Publisher1-Publisher2>

  1. Appelez makeappx.exe avec l’indicateur /pb pour pointer vers le fichier de pontage du serveur de publication :
makeappx.exe pack /p app.msix /d .\app\ /pb artifacts.txt
  1. Signer votre package à l’aide du nouveau certificat
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix

Vous disposez maintenant d’un package qui contient les artefacts stockés à l’intérieur de celui-ci et qui a été signé avec le nouveau certificat. Vous pouvez déployer le package comme n’importe quel autre package MSIX.

À propos de l’installation

  • Nous vous recommandons d’horodatage du catalogue. Pour ce faire, vous devez ajouter ces arguments dans l’appel pour signtool avant le chemin du catalogue : /td SHA256 /tr

  • Vous devez toujours installer l’ancien certificat (recommandé avec timestamp) sur l’ordinateur de la plateforme pour installer le package signé par le nouveau certificat.

  • Pour tirer parti de cette fonctionnalité, vous devez effectuer cette opération avant l’expiration de l’ancien certificat.

  • Cette fonctionnalité fonctionne à la fois pour les packages MSIX et les bundles MSIX