我们有一个 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