MSIX 永久性标识

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

要求

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

演练

这是一个分步说明,指导如何在维护包标识的同时使用新证书对包进行签名。

创建项目

  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 (目录) 文件,以创建将用于对项目进行签名的目录。 将它命名为任何你喜欢的名称 artifact.cdf:
[CatalogHeader]
Name=artifact.cat
CatalogVersion=2
HashAlgorithms=SHA256

[CatalogFiles]
<HASH>artifact.xml=artifact.xml
  1. 在此makecat.exe CDF 运行运行。 它将创建文件中指定的文件
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 文件路径。 项目必须在应用时排序。 如果有两个项目用于发布服务器 1-Publisher2>,另一个针对 Publisher2-Publisher3>,则必须首先列出发布服务器 1-Publisher2> 的项目

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

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

注意事项

  • 建议对目录进行时间戳。 为此,需要在 signtool 的调用中添加这些参数,然后目录路径:/td SHA256 /tr

  • 你仍然需要在计算机上安装旧证书 (,) 时间戳证书来安装新证书签名的包。

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

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