Freigeben über


Persistente MSIX-Identität

Dieses Feature ermöglicht das Signieren von Paketen mit einem neuen Zertifikat, während die Aktualisierungsoberfläche der App weiterhin Standard beibehalten wird. Dies bedeutet, dass das Paket seine alte Paketidentität auf der Plattform beibehalten kann, ohne dass das alte (originale) Zertifikat signiert werden muss. Ab Windows Insider Preview Build 22000 muss ein Artefakt erstellt werden, um die Beziehung zwischen dem alten Zertifikat und dem neuen Zertifikat anzuzeigen, das zum Signieren verwendet wird. Im Folgenden finden Sie eine schrittweise Erläuterung, wie Sie mit der Paketidentität beibehalten werden, um die Updateerfahrung zu Standard zu gewährleisten.

Anforderungen

  • Rufen Sie MakeAppx.exe über das Windows SDK ab. Dieses Feature ist derzeit im Windows SDK Preview 22000 verfügbar.
  • Rufen Sie SignTool.exe über das Windows SDK ab. Dieses Feature ist derzeit im Windows SDK Preview 22000 verfügbar.
  • Das alte Zertifikat (CN=Old), das zum Signieren des ursprünglichen Pakets verwendet wurde
  • Das neue Zertifikat (CN=New), das zum Signieren des Pakets verwendet wird

Exemplarische Vorgehensweise

Dies ist eine schrittweise Anleitung zum Signieren des Pakets mit dem neuen Zertifikat, während Standard die Paketidentität beibehalten wird.

Erstellen des Artefakts

  1. Schreiben Sie das XML-Artefakt, das die alten und neuen Herausgeber enthält. Benennen Sie alles, was Ihnen gefällt, 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. Schreiben Sie eine Katalogdefinitionsdatei (Catalog Definition File, CDF), um den Katalog zu erstellen, der zum Signieren des Artefakts verwendet wird. Benennen Sie alles, was Ihnen gefällt, artifact.cdf:
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256

[CatalogFiles]
<HASH>artifact.xml=artifact.xml
  1. Führen Sie makecat.exe auf diesem CDF aus. Die darin angegebene Datei wird erstellt.
makecat.exe artifact.cdf
  1. Signieren des Katalogs mit dem alten Zertifikat
signtool.exe sign /f old-cert.pfx /fd SHA256 artifact.cat

Zu diesem Zeitpunkt müssen Sie nur die XML- und CAT-Dateien danach beibehalten. Sie können mehrere Artefakte erstellen, die Plattform unterstützt derzeit jedoch bis zu 5.

Hinweis

Es wird empfohlen, den Zeitstempel Ihrer Katalogdatei zu verwenden. Wenn der Katalog nicht zeitstempelt ist, wird das Artefakt nutzlos, sobald das alte Zertifikat abläuft.

Erstellen des Pakets

  1. Erstellen Sie eine Publisher-Überbrückungsdatei, um makeappx.exe mitzuteilen, welche Artefakte verwendet werden sollen. Diese Datei ähnelt der Zuordnungsdatei. Benennen Sie alles, was Ihnen gefällt, artifacts.txt
[PublisherBridging]
"artifact.xml" "artifact.cat"

Jede Zeile muss ein XML- und CAT-Dateipfadpaar enthalten. Die Artefakte müssen sortiert werden, sobald sie angewendet werden. Wenn Sie zwei Artefakte für publisher1-Publisher2> und eine andere für Publisher2-Publisher3> haben, müssen Sie zuerst die erste für Publisher1-Publisher2 auflisten>.

  1. Rufen Sie makeappx.exe mit /pb flag auf die Publisher-Überbrückungsdatei zu verweisen:
makeappx.exe pack /p app.msix /d .\app\ /pb artifacts.txt
  1. Signieren Des Pakets mithilfe des neuen Zertifikats
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix

Jetzt haben Sie ein Paket, das die Darin gespeicherten Artefakte enthält und mit dem neuen Zertifikat signiert wurde. Sie können das Paket wie jedes andere MSIX-Paket bereitstellen.

Überlegungen

  • Es wird empfohlen, dass der Katalog zeitstempelt werden soll. Dazu müssen Sie diese Argumente im Aufruf zum Signtool vor dem Pfad zum Katalog hinzufügen: /td SHA256 /tr

  • Sie müssen weiterhin das alte Zertifikat (empfohlen mit Zeitstempel) auf dem Computer für die Plattform installieren, um das Paket zu installieren, das vom neuen Zertifikat signiert wurde.

  • Um dieses Feature nutzen zu können, müssen Sie dies tun, bevor das alte Zertifikat abgelaufen ist.

  • Dieses Feature funktioniert sowohl für MSIX-Pakete als auch für MSIX-Bundles.