在 CI Pipe with msbuild 中以不同方式签署商店和侧载 UWP 应用程序
Signing for store & sideloaded UWP App differently in CI Pipe with msbuild
我们在 Windows 商店中提供了一个 UWP 应用程序。此外,某些企业客户和 Beta 测试人员将侧载相同的应用程序。
由于多种原因,我们需要为商店和侧载版本对 appxbundle 进行不同的签名,这意味着我们有另一个用于侧载案例的证书。
虽然 UWP 应用程序已经与商店相关联,并且包清单指向商店密钥,但我想知道是否有办法构建 一次(时间节省),但在我们的 CI 管道中使用 msbuild/vsstudio 对输出 两次 进行不同的签名。
有什么想法或者我们是否需要拆分构建过程并将 makeappx 与签名工具一起使用来实现这一点?另一种方法是即时修改 package.appxmanifest 并重新构建它。
有没有更好的方法?
谢谢
I wonder if there is a way how we can build once (for time savings) but sign the output twice differently using msbuild/vsstudio in our CI Pipeline.
否,因为您需要修改清单中的发布者信息,以便您可以使用其他证书对其进行签名。
Is there a better way?
我建议您创建两个具有相同功能的不同项目,一个用于侧载,另一个用于发布到 windows 商店,以便您更方便地管理它们。如果你只使用一个项目,你的应用程序版本号可能很难区分,因为每创建一个包,版本号就会增加。此外,如果您有更新版本,则不需要总是更改清单发布者信息。
在这里考虑了各种选择后,我们选择一个项目两次构建。
第一个构建用于存储,第二个 运行 用于侧载。
在 运行 之间,我们使用这个简单的脚本更新发布者,然后再次触发相同的构建:
Param(
[String]$projectFolder,
[String]$project,
[String]$publisher
)
# -------------------------------- Update the manifest file --------------------------------
$manifestFile = Get-Item "$projectFolder$project\Package.appxmanifest"
[XML]$manifest = get-content $manifestFile
$manifest.Package.Identity.Publisher = $publisher
$manifest.Save($manifestFile)
此外,您需要为您的 msbuild 命令提供覆盖,以匹配您的新证书,如下所示:
/p:PackageCertificateKeyFile=xxx.pfx /p:PackageCertificateThumbprint=xxx
我们在 Windows 商店中提供了一个 UWP 应用程序。此外,某些企业客户和 Beta 测试人员将侧载相同的应用程序。
由于多种原因,我们需要为商店和侧载版本对 appxbundle 进行不同的签名,这意味着我们有另一个用于侧载案例的证书。
虽然 UWP 应用程序已经与商店相关联,并且包清单指向商店密钥,但我想知道是否有办法构建 一次(时间节省),但在我们的 CI 管道中使用 msbuild/vsstudio 对输出 两次 进行不同的签名。
有什么想法或者我们是否需要拆分构建过程并将 makeappx 与签名工具一起使用来实现这一点?另一种方法是即时修改 package.appxmanifest 并重新构建它。
有没有更好的方法?
谢谢
I wonder if there is a way how we can build once (for time savings) but sign the output twice differently using msbuild/vsstudio in our CI Pipeline.
否,因为您需要修改清单中的发布者信息,以便您可以使用其他证书对其进行签名。
Is there a better way?
我建议您创建两个具有相同功能的不同项目,一个用于侧载,另一个用于发布到 windows 商店,以便您更方便地管理它们。如果你只使用一个项目,你的应用程序版本号可能很难区分,因为每创建一个包,版本号就会增加。此外,如果您有更新版本,则不需要总是更改清单发布者信息。
在这里考虑了各种选择后,我们选择一个项目两次构建。
第一个构建用于存储,第二个 运行 用于侧载。
在 运行 之间,我们使用这个简单的脚本更新发布者,然后再次触发相同的构建:
Param(
[String]$projectFolder,
[String]$project,
[String]$publisher
)
# -------------------------------- Update the manifest file --------------------------------
$manifestFile = Get-Item "$projectFolder$project\Package.appxmanifest"
[XML]$manifest = get-content $manifestFile
$manifest.Package.Identity.Publisher = $publisher
$manifest.Save($manifestFile)
此外,您需要为您的 msbuild 命令提供覆盖,以匹配您的新证书,如下所示:
/p:PackageCertificateKeyFile=xxx.pfx /p:PackageCertificateThumbprint=xxx