この機能を使用すると、アプリの更新エクスペリエンスを維持しながら、新しい証明書でパッケージに署名できます。 言い換えると、これにより、古い (元の) 証明書で署名しなくても、パッケージはプラットフォームで古いパッケージ ID を保持できます。 Windows Insider Preview ビルド 22000 以降では、古い証明書と署名に使用されている新しい証明書との関係を示すために成果物を作成する必要があります。 更新エクスペリエンスを維持するためにパッケージ ID を使用して永続化する方法の詳細な説明を次に示します。
要求事項
- Windows SDK を使用して MakeAppx.exe を取得します。 この機能は現在、Windows SDK Preview 22000 で使用できます
- Windows SDK を使用して SignTool.exe を取得します。 この機能は現在、Windows SDK Preview 22000 で使用できます
- 元のパッケージの署名に使用された古い証明書 (CN=Old)
- パッケージの署名に使用される新しい証明書 (CN=New)
操作手順
これは、パッケージ ID を維持しながら、新しい証明書を使用してパッケージに署名する方法に関するステップ バイ ステップの手順です。
成果物を作成する
- 古いパブリッシャーと新しいパブリッシャーを詳細に記述する XML アーティファクトを記述します。 あなたが好きな名前を付けます, artifact.xml:
<?xml version="1.0" encoding="UTF-8"?>
<Publisher xmlns="http://schemas.microsoft.com/appx/publisherbridging/2021" Old="CN=Old" New="CN=New" />
- 成果物の署名に使用するカタログを作成するカタログ定義ファイル (CDF) を記述します。 任意の名前を付けます。artifact.cdf:
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256
[CatalogFiles]
<HASH>artifact.xml=artifact.xml
- この CDF で makecat.exe を実行します。 指定されたファイルが作成されます
makecat.exe artifact.cdf
- 古い証明書を使用してカタログに署名する
signtool.exe sign /f old-cert.pfx /fd SHA256 artifact.cat
この時点で必要なのは、この後に XML ファイルと CAT ファイルを保持することだけです。 複数の成果物を作成できますが、プラットフォームは現在最大 5 つをサポートしています。
注
カタログ ファイルのタイムスタンプを設定することをお勧めします。 カタログにタイムスタンプがない場合、古い証明書の有効期限が切れた時点でアーティファクトは役に立たなくなります。
パッケージを作成する
- makeappx.exe に使用すべき成果物を指定するために、発行元ブリッジ ファイルを作成します。 このファイルはマッピング ファイルに似ています。 好きな名前を付けます。artifacts.txt
[PublisherBridging]
"artifact.xml" "artifact.cat"
各行には、XML と CAT のファイル パスのペアが含まれている必要があります。 成果物は、適用時に順序付けする必要があります。 Publisher1->Publisher2 に向かう成果物と、Publisher2->Publisher3 に向かう成果物の 2 つの成果物がある場合は、Publisher1->Publisher2 の成果物をまずリストする必要があります。
- /pb フラグを指定して makeappx.exe を呼び出して、パブリッシャー ブリッジング ファイルを指します。
makeappx.exe pack /p app.msix /d .\app\ /pb artifacts.txt
- 新しい証明書を使用してパッケージに署名する
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix
これで、成果物が内部に格納され、新しい証明書で署名されたパッケージが作成されました。 他の MSIX パッケージと同様にパッケージを展開できます。
考慮事項
カタログのタイムスタンプを設定することをお勧めします。 これを行うには、カタログへのパスの前に signtool の呼び出しで次の引数を追加する必要があります: /td SHA256 /tr
新しい証明書によって署名されたパッケージをインストールするには、プラットフォームのコンピューターに古い証明書 (タイムスタンプを使用して推奨) をインストールする必要があります。
この機能を利用するには、古い証明書の有効期限が切れる前にこれを行う必要があります。
この機能は、MSIX パッケージと MSIX バンドルの両方で機能します