使用 msbuild 在 CI Pipe 中以不同的方式对应用商店和旁加载 UWP 应用进行签名



我们有一个 Windows 应用商店中可用的 UWP 应用。此外,对于一些企业客户和beta测试人员,将旁加载相同的应用程序。

由于几个原因,我们需要对存储和旁加载版本的appxbundle进行不同的签名,这意味着我们有另一个用于旁加载情况的证书。

虽然 UWP 应用已与应用商店关联,并且包清单指向存储密钥,但我想知道是否有一种方法可以构建一次(以节省时间(,但在我们的 CI 管道中使用 msbuild/vsstudio 对输出进行两次不同的签名。

任何想法或我们需要拆分构建过程并将makeappx与签名工具一起使用来实现这一点?另一种方法是动态修改 package.appxmanifest 并再次构建它。

有没有更好的方法?

谢谢

我想知道是否有办法我们可以构建一次(以节省时间(,但在我们的 CI 管道中使用 msbuild/vsstudio 对输出进行两次不同的签名。

否,因为您需要修改清单中的发布者信息,以便可以使用其他证书对其进行签名。

有没有更好的方法?

我建议您创建两个具有相同功能的不同项目,一个用于旁加载,另一个用于发布到 Windows 应用商店,以便您可以更方便地管理它们。如果仅使用一个项目,则应用版本号可能难以区分,因为每次创建包时,版本号都会增加。此外,如果您有更新版本,则无需始终更改清单发布者信息。

在考虑了这里的各种选项后,我们选择构建一个项目两次

第一次生成用于存储,第二次运行用于旁加载。

在运行之间,我们使用这个简单的脚本更新发布者,然后再次触发相同的构建:

Param(
[String]$projectFolder,
[String]$project,
[String]$publisher 
)
# -------------------------------- Update the manifest file --------------------------------
$manifestFile = Get-Item "$projectFolder$projectPackage.appxmanifest" 
[XML]$manifest = get-content $manifestFile
$manifest.Package.Identity.Publisher = $publisher
$manifest.Save($manifestFile)

此外,还需要为 msbuild 命令提供替代以匹配新证书,如下所示:

 /p:PackageCertificateKeyFile=xxx.pfx /p:PackageCertificateThumbprint=xxx

最新更新