管道中使用 Azure Key Vault 进行代码签名 Wix 安装程序

问题描述 投票:0回答:1

我正在尝试对另一家公司开发的 Wix 安装程序包进行代码签名(我对 Wix 的了解有限)。

作为概念证明工作,我们使用 WixSharp.DigitalSignature 签署了 MSI 和 EXE,如下所示,这似乎可以与自签名证书一起使用

project.DigitalSignature = new DigitalSignature()
   {
      PfxFilePath = Resources.CertificateUri,
      HashAlgorithm = HashAlgorithmType.sha256,
      Description = Resources.BootstrapperProject,
      TimeUrls = new System.Collections.Generic.List<Uri>() { new Uri("http://timestamp.digicert.com") }
   };

但现在是时候使用 GlobalSign 的正确证书来实现了,似乎上述选项现在无法实现,因为我们现在必须将证书存储在 Azure Key Vault 中。

我们尝试通过管道使用 AzureSignTool 对 MSI 和 EXE 进行签名,但在运行安装程序时,我总是收到错误“0x80070001 - 功能不正确”。

日志文件输出以下信息:

[0ADC:1034][2021-12-21T11:00:53]i320: Registering bundle dependency provider: {0315ab7d-04da-4a77-8536-fa0e0211c531}, version: 1.0.0.124
[0ADC:1034][2021-12-21T11:00:53]i371: Updating session, registration key: SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{0315ab7d-04da-4a77-8536-fa0e0211c531}, resume: Active, restart initiated: No, disable resume: No
[1710:10C8][2021-12-21T11:00:53]i336: Acquiring container: WixAttachedContainer, copy from: C:\Users\Administrator\Desktop\DigiView Installer.exe
[1710:10C8][2021-12-21T11:00:58]i000: Setting string variable 'WixBundleLastUsedSource' to value 'C:\Users\Administrator\Desktop\'
[1710:1720][2021-12-21T11:00:58]e000: Error 0x80070001: Failed to extract all files from container, erf: 1:2:0
[1710:10C8][2021-12-21T11:00:58]e000: Error 0x80070001: Failed to wait for operation complete.
[1710:10C8][2021-12-21T11:00:58]e000: Error 0x80070001: Failed to open container.
[1710:10C8][2021-12-21T11:00:58]e000: Error 0x80070001: Failed to open container: WixAttachedContainer.
[1710:10C8][2021-12-21T11:00:58]e312: Failed to extract payloads from container: WixAttachedContainer to working path: C:\Users\ADMINI~1\AppData\Local\Temp\2\{4D72E5B3-50AB-4B5D-BD93-BC559386F434}\5A4A1D973A87D89730BC20C9B805B7A384EF1383, error: 0x80070001.
[1710:0F88][2021-12-21T11:00:59]e000: Error 0x80070001: Failed while caching, aborting execution.

网上关于这种情况的信息非常有限,有人有办法解决我面临的特定问题吗?或者能给我一些有用的资源吗?

wix azure-pipelines code-signing azure-keyvault wixsharp
1个回答
0
投票

我遇到了同样的错误,但有不同的消息:

错误0x80070001:无法从容器中提取所有文件

有一个开发者有同样的问题这里(也有一个解决方案,但有点难以理解,继续阅读以获取更多选项来解决它)。

总结是,当您安装时,Wix 正在运行多个可执行文件(就像安装程序 exe 内部有另一个运行安装程序的 exe 一样)。如果您不签署两者,则会导致此类问题。即使您获得了 EV 证书,它也会触发智能屏幕(因为并非安装时运行的所有内容都经过签名)。阅读一些有关 使用 Wix 签署捆绑包的一般信息。

现在关于如何正确签署 Azure,我使用了这个

链接。阅读评论,其中有关于我也偶然发现的一些错误的有趣信息!

需要注意的是,如果您使用 windows-latest,则在 AzureDevops 上,您有一个安装了 Wix 的环境变量。您可以使用管道中的命令行任务:

'“\insignia.exe 中的%WIX%”'

© www.soinside.com 2019 - 2024. All rights reserved.