Condividi tramite


Identità persistente MSIX

Questa funzionalità consente di firmare i pacchetti con un nuovo certificato mantenendo comunque l'esperienza di aggiornamento dell'app. In altre parole, questo consente al pacchetto di rendere persistente l'identità del pacchetto precedente nella piattaforma senza la necessità di firmare con il certificato precedente (originale). A partire da Windows Insider Preview Build 22000, è necessario creare un artefatto per mostrare la relazione tra il certificato precedente e il nuovo certificato usato per la firma. Di seguito è riportata una spiegazione dettagliata di come rendere persistente l'identità del pacchetto per mantenere l'esperienza di aggiornamento.

Requisiti

  • Ottenere MakeAppx.exe tramite Windows SDK. Questa funzionalità è attualmente disponibile in Windows SDK Preview 22000
  • Ottenere SignTool.exe tramite Windows SDK. Questa funzionalità è attualmente disponibile in Windows SDK Preview 22000
  • Certificato precedente (CN=Old) usato per firmare il pacchetto originale
  • Nuovo certificato (CN=New) che verrà usato per firmare il pacchetto

Procedura dettagliata

Questa è un'istruzione dettagliata su come firmare il pacchetto con il nuovo certificato mantenendo l'identità del pacchetto.

Creare l'artefatto

  1. Scrivere l'artefatto XML che descrive in dettaglio i server di pubblicazione precedenti e nuovi. Denominarlo come 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. Scrivere un file di definizione del catalogo (CDF) per creare il catalogo che verrà usato per firmare l'artefatto. Denominarlo in qualsiasi modo, artifact.cdf:
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256

[CatalogFiles]
<HASH>artifact.xml=artifact.xml
  1. Eseguire makecat.exe in questa CDF. Creerà il file specificato in esso
makecat.exe artifact.cdf
  1. Firmare il catalogo usando il certificato precedente
signtool.exe sign /f old-cert.pfx /fd SHA256 artifact.cat

A questo punto, è sufficiente conservare i file XML e CAT dopo questa operazione. È possibile creare diversi artefatti, ma la piattaforma supporta attualmente fino a 5.

Nota

È consigliabile eseguire il timestamp del file di catalogo. Se il catalogo non viene timestampato, l'artefatto diventa inutile al momento della scadenza del certificato precedente.

Creare il pacchetto

  1. Creare un file di bridging dell'editore per indicare a makeappx.exe quali elementi usare. Questo file è simile al file di mapping. Denominare tutto ciò che ti piace, artifacts.txt
[PublisherBridging]
"artifact.xml" "artifact.cat"

Ogni riga deve contenere una coppia di percorsi di file XML e CAT. Gli artefatti devono essere ordinati quando vengono applicati. Se si dispone di due elementi per publisher1-Publisher2> e un altro per Publisher2-Publisher3>, è necessario elencare prima quello per Publisher1-Publisher2>

  1. Chiamare makeappx.exe con il flag /pb per puntare al file di bridging del server di pubblicazione:
makeappx.exe pack /p app.msix /d .\app\ /pb artifacts.txt
  1. Firmare il pacchetto usando il nuovo certificato
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix

A questo punto è disponibile un pacchetto in cui sono archiviati gli artefatti e che è stato firmato con il nuovo certificato. È possibile distribuire il pacchetto come qualsiasi altro pacchetto MSIX.

Considerazioni

  • È consigliabile che il catalogo sia timestamp. A tale scopo, è necessario aggiungere questi argomenti nella chiamata a signtool prima del percorso del catalogo: /td SHA256 /tr

  • Sarà comunque necessario installare il certificato precedente (consigliato con timestamp) nel computer per installare il pacchetto firmato dal nuovo certificato.

  • Per sfruttare questa funzionalità, è necessario eseguire questa operazione prima che il certificato precedente sia scaduto.

  • Questa funzionalità funziona sia per i pacchetti MSIX che per i bundle MSIX