在签署 AppX 文件时出现 SignTool 错误:“错误:SignerSign()失败。”(-2147024693/0x800700cb)

7
我正在使用makeappx.exe创建一个Appx包,然后尝试使用SignTool.exe进行签名。但是,我从SignTool获得的错误是:“Error: SignerSign() failed.” (-2147024693/0x800700cb)。我使用的证书是按照这里的说明自己创建的。在EventViewer中没有关于此操作失败的记录!我不明白这个错误的含义以及如何解决它!!有人遇到过这种情况并找到了解决方案吗?由于无法使用Visual Studio,因此我需要坚持使用makeappx.exe

这是一个Windows错误,ERROR_ENVVAR_NOT_FOUND。signtool /nph选项的文档中使用了一个环境变量。如果您没有正确记录您的问题,那么只能进行盲猜。总之,这与"环境"有关。 - Hans Passant
传递给 SignTool.exe 的完整命令行是: SignToolexe sign /a /f cert.pfx /fd SHA256 /v /debug myPackage.appxMSDN 关于 /nph 选项的说明: 如果支持,则抑制可执行文件的页面哈希。默认行为由 SIGNTOOL_PAGE_HASHES 环境变量和 Wintrust.dll 版本确定。对于非 PE 文件,此选项将被忽略。我的包中没有任何 PE 文件,因此不适用。 - Dorel Pîslan
2个回答

4

appxmanifest xml文件需要有一个与签署appx包的证书相对应的发布者。发布者在"<Identity />"标记的属性中指定。

来自MSDN

应用程序清单发布者名称必须完全匹配签名的主题名称。 注意:这些名称用引号括起来,区分大小写和空格。 您可以更新AppxManifest.xml文件中为Identity元素定义的Publisher属性字符串,以匹配预期签名证书的主题名称。或者,选择具有与应用程序清单发布者名称匹配的主题名称的不同签名证书。清单发布者名称和证书主题名称均列在事件消息中。

示例错误:

错误0x8007000B:应用程序清单发布者名称(CN=Contoso)必须与签名证书的主题名称(CN=Contoso,C=US)匹配。


2
我收到的错误是 0x800700cb,而不是 0x8007000B - Dorel Pîslan
1
抱歉,我没有看到那个隐藏的 C!:( 对那个我一无所知。 - MrD
你尝试在事件日志中查找更多详细信息了吗?(如链接的MSDN文章中建议的那样) - Yoav Feuerstein

1

我知道这是一个老问题,但我刚遇到了与签名工具类似的问题,但错误代码不同。尽管如此,我认为评论是相关的:

事实证明,如果您使用错误版本的SignTool,则也会出现此错误,但它没有提示这一事实。

因此,最重要的提示是...

确保您使用与MakeAppx.exe工具相同文件夹中的SignTool.exe。在我的情况下,“C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64\”

交叉链接应该有助于提高此页面在搜索引擎上的排名。

https://blogs.blackmarble.co.uk/rfennell/2019/04/30/a-fix-for-error-signersign-failed-2146958839-0x80080209-with-signtool-exe/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接