You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用PowerShell中SignTool签名MSI文件时触发certificateProfileName空值异常

解决Azure信任签名中certificateProfileName空引用异常问题

问题场景

尝试使用以下PowerShell命令对MSI文件执行代码签名:

& "C:\Program Files (x86)\Windows Kits\10\bin\10.0.22000.0\x64\signtool.exe" sign /v /fd SHA256 /tr "http://tsa.msign.microsoft.com" /td SHA256 /dlib "C:\Users\DELL\AppData\Local\Microsoft\MicrosoftTrustedSigningClientTools\Azure.CodeSigning.Dlib.dll" /dmdf "D:\APPSign\metadata.json" "D:\Projects\App\APPWPF\Debug\APPWPF.msi"

执行后抛出以下错误:

Trusted Signing
Version: 1.0.68
"Metadata": { "Endpoint": "", // 此处已添加所选区域的URL "CodeSigningAccountName": "myapp",
"ExcludeCredentials": [] }

提交摘要进行签名... 未处理托管异常
System.ArgumentNullException: 值不能为空。(参数 'certificateProfileName') at
Azure.CodeSigning.CertificateProfileClient.StartSignAsync(String
codeSigningAccountName, String certificateProfileName, SignRequest
body, String xCorrelationId, String clientVersion, CancellationToken
cancellationToken) at
Azure.CodeSigning.Dlib.Core.DigestSigner.SignAsync(UInt32 algorithm,
Byte[] digest, SafeFileHandle safeFileHandle, CancellationToken
cancellationToken) at
Azure.CodeSigning.Dlib.Core.DigestSigner.Sign(UInt32 algorithm, Byte[]
digest, SafeFileHandle safeFileHandle) at
AuthenticodeDigestSignExWithFileHandleManaged(_CRYPTOAPI_BLOB*
pMetadataBlob, UInt32 digestAlgId, Byte* pbToBeSignedDigest, UInt32
cbToBeSignedDigest, Void* hFile, _CRYPTOAPI_BLOB* pSignedDigest,
_CERT_CONTEXT** ppSignerCert, Void* hCertChainStore)

SignTool错误:发生意外的内部错误。错误信息: "Error: SignerSign() failed." (-2147467259/0x80004005)

当前使用的metadata.json内容如下:

{
  "Endpoint": "", // 此处已添加所选区域的URL
  "CodeSigningAccountName": "myapp",
  "SigningProfileName": "myapp", // 账户与证书名称一致
}

问题原因与解决方案

核心原因

你在metadata.json中使用了错误的字段名:配置的是SigningProfileName,但Azure信任签名的DLL要求的必填字段是CertificateProfileName(拼写和大小写必须完全匹配),导致程序无法找到该参数值,触发空引用异常。

修正后的metadata.json

{
  "Endpoint": "你的区域Endpoint URL", // 替换为实际的信任签名区域URL
  "CodeSigningAccountName": "myapp",
  "CertificateProfileName": "myapp"
}

额外注意事项

  1. 确保Endpoint填写正确的区域URL(例如https://wus.codesigning.azure.net,需与你的信任签名账户所在区域对应)
  2. CertificateProfileName必须与Azure信任签名中创建的证书配置文件名称完全一致
  3. 移除JSON中的注释(部分JSON解析器不支持注释,可能引发解析异常)

修正后重新执行签名命令,即可解决该空引用异常。

内容的提问来源于stack exchange,提问作者MANSI

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 20:04:57