SignTool.exe偶尔因退出代码1而失败

时间:2012-02-21 16:01:50

标签: cruisecontrol.net digital-certificate signtool

作为构建系统的一部分,我们使用带证书的signtool.exe在构建二进制文件后对其进行签名。签约失败时,偶尔(很难判断它什么时候会发生):

 error MSB3073: The command "C:\Program Files\Microsoft Visual Studio 8\SDK\v2.0\bin\signtool.exe" [...] exited with code 1.

根据MSDN,退出代码为1表示签名文件时出错。我可以验证文件没有签名。

我还注意到,有时候,时间戳部分会因为不同的错误消息而超时,尽管文件仍然会被签名(没有时间戳)。

如何对这些看似随机,不一致的签名失败进行故障排除和修复?

4 个答案:

答案 0 :(得分:5)

我强烈怀疑与时间戳服务器的连接失败是造成偶然失败的原因。也许您在当前检查系统事件日志中是否有丢失的连接。

答案 1 :(得分:2)

我遇到了同样的问题。这是因为MS反恶意软件进程MsMpEng.exe检查二进制文件并且不允许任何人访问它。 为了解决这个问题,我在RAM磁盘上构建了二进制文件并且工作正常。

答案 2 :(得分:2)

我刚刚在Windows 8.1上遇到过这个问题,所以这不是某些人引用的Windows XP根证书问题。

我发现问题是由于正在签名的.exe也在运行造成的。

如果您从cmd提示符运行signtool并尝试对其进行签名,您将收到一条有用的文本消息,告诉您出现了什么问题(比CreateProcess()返回代码1好得多。

停止了正在运行的过程,并且能够签好。

答案 3 :(得分:1)

就我而言,解决方案中的.pfx文件是旧文件。直到有人告诉我用新的,有效的证书文件替换证书文件,我继续得到"失败,退出代码1"错误。

意思是,确保证书文件有效且未过期。