MSIX 永久性标识

此功能使你能够使用新证书对包进行签名,同时仍保持应用程序的更新体验。 换句话说,这允许包在平台中保留其旧的包标识,而无需用旧的 (原始) 证书进行签名。 从 Windows Insider Preview 生成22000开始,将需要创建项目以显示旧证书与用于签名的新证书之间的关系。 下面是有关如何保留包标识以维护更新体验的分步说明。

要求

  • 通过 Windows SDK 获取 MakeAppx.exe。 此功能当前在 Windows SDK 预览版22000中提供
  • 通过 Windows SDK 获取 SignTool.exe。 此功能当前在 Windows SDK 预览版22000中提供
  • 旧证书 (CN = 旧) 用于对原始包进行签名
  • 新证书 (CN = New) 用于对包进行签名

演练

本文逐步说明如何使用新证书对包进行签名,同时维护包标识。

创建项目

  1. 编写详细介绍新旧发布者的 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" />
  1. 编写目录定义文件 (CDF) ,以创建将用于对项目进行签名的目录。 将其命名为你喜欢的任何内容,例如:
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256

[CatalogFiles]
<HASH>artifact.xml=artifact.xml
  1. 在此 CDF 上运行 makecat.exe。 它将创建它中指定的文件
makecat.exe artifact.cdf
  1. 使用旧证书对目录签名
signtool.exe sign /f old-cert.pfx /fd SHA256 artifact.cat

此时,只需在此之后保留 XML 和 CAT 文件即可。 可以创建多个项目,但该平台当前最多支持5个项目。

备注

建议你将目录文件时间戳。 如果目录不是带时间戳的目录,则该项目在旧证书过期后就会毫无用处。

创建包

  1. 创建发布服务器桥接文件,告诉 makeappx.exe 要使用的项目。 此文件类似于映射文件。 将其命名为你喜欢的任何内容,artifacts.txt
[PublisherBridging]
"artifact.xml" "artifact.cat"

每行必须包含一对 XML 和 CAT 文件路径。 项目在应用时必须按顺序排列。 如果你有两个项目,一个用于 >Publisher1 Publisher2,另一个用于 Publisher2 >Publisher3,你必须首先列出 Publisher1 >Publisher2 的

  1. 调用具有 /pb 标志的 makeappx.exe,以指向发布服务器桥接文件:
makeappx.exe /p app.msix /d .\app\ /pb artifacts.txt
  1. 使用新证书对包进行签名
signtool.exe sign /f new-cert.pfx /fd SHA256 app.msix

现在,你有了一个包,其中包含项目 (s) 并使用新证书进行签名。 你可以像部署任何其他 .MSIX 包一样部署包。

注意事项

  • 建议为目录加盖时间戳。 要执行此操作,需要在对 signtool 的路径之前的调用中添加这些参数:/td SHA256/tr

  • 你仍需要使用计算机上的时间戳) (建议安装旧证书,以便平台安装由新证书签名的包。

  • 若要利用此功能,您需要在旧证书过期之前执行此操作。

  • 此功能适用于 .MSIX 包和 .MSIX 捆绑