【问题标题】:SignTool sporadically reports EXEC This file format cannot be signed because it is not recognizedSignTool 零星报 EXEC 这个文件格式无法签名,因为无法识别
【发布时间】:2021-11-08 14:46:35
【问题描述】:

作为持续集成过程的一部分,我正在使用 signtool 实用程序在 Teamcity 上签署 MSI 和 EXE 文件。大多数情况下它按预期工作,但有时构建失败并显示以下错误消息。

[09:04:00][Exec] C:\TeamCity\buildAgent\work\f1f2a8269bd3cd0e\MyProject.Setup.AllUsers\..\SigningTool\signtool.exe sign /f C:\TeamCity\buildAgent\work\f1f2a8269bd3cd0e\MyProject.Setup.AllUsers\..\Certificate\MyCompany.p12 /d "MyCompany" /p MyPassword!  /v /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td SHA256 C:\TeamCity\buildAgent\work\f1f2a8269bd3cd0e\MyProject.Setup.AllUsers\bin\Debug\MyProject.msi
[09:04:00][Exec] The following certificate was selected:
[09:04:00][Exec]     Issued to: MyCompany
[09:04:00][Exec] 
[09:04:00][Exec]     Issued by: Sectigo RSA Code Signing CA
[09:04:00][Exec] 
[09:04:00][Exec]     Expires:   Wed Apr 27 23:59:59 2022
[09:04:00][Exec] 
[09:04:00][Exec]     SHA1 hash: ***
[09:04:00][Exec] 
[09:04:00][Exec] 
[09:04:00][Exec] Done Adding Additional Store
[09:04:00][Exec] 
[09:04:00][Exec] Number of files successfully Signed: 0
[09:04:00][Exec] 
[09:04:00][Exec] Number of warnings: 0
[09:04:00][Exec] 
[09:04:00][Exec] Number of errors: 1
[09:04:00][Exec] 
[09:04:00][Exec] EXEC This file format cannot be signed because it is not recognized.
[09:04:00][Exec] EXEC An error occurred while attempting to sign: C:\TeamCity\buildAgent\work\f1f2a8269bd3cd0e\MyProject.Setup.AllUsers\bin\Debug\MyProject.msi
[09:04:00][Exec] 
[09:04:00][Exec] C:\TeamCity\buildAgent\work\f1f2a8269bd3cd0e\packages\WiX.3.11.2\tools\wix2010.targets(2832, 5): error MSB3073: The command "C:\TeamCity\buildAgent\work\f1f2a8269bd3cd0e\MyProject.Setup.AllUsers\..\SigningTool\signtool.exe sign /f C:\TeamCity\buildAgent\work\f1f2a8269bd3cd0e\MyProject.Setup.AllUsers\..\Certificate\MyCompany.p12 /d "MyCompany" /p MyPassword!  /v /tr http://sha256timestamp.ws.symantec.com/sha256/timestamp /td SHA256 C:\TeamCity\buildAgent\work\f1f2a8269bd3cd0e\MyProject.Setup.AllUsers\bin\Debug\MyProject.msi" exited with code 1.

一旦失败,所有后续构建都会开始失败并显示相同的错误消息,直到我重新启动构建机器。使用的signtool版本是10.0.17763.132。更令人困惑的是,当我登录到构建机器并使用相同的命令行签署相同的可执行文件时,它会成功签署而没有任何问题。

【问题讨论】:

    标签: signtool


    【解决方案1】:

    在不同的背景下发生了非常相似的事情。在那里,一个可执行文件也突然变得无法使用,需要重新启动系统。

    原因是进程停止并等待输入确认,输出文件(在您的情况下,这将是签名的可执行文件)仍然打开。确认从未到来(它是一台无头机器),并且该过程一直等到重新启动。

    我们通过运行 Process Explorer 并检查所有包含不可写文件名的打开文件句柄来找出原因。那时我们发现它被另一个进程保持打开状态,终止第二个进程允许重新启动循环,而无需重新启动整个机器。

    最后,就我而言,是挂起进程的输入流出现故障;我们改变了工作流程,问题就消失了。

    我建议一旦机器再次出现故障,您就运行 Process Explorer 并检查哪些进程处于活动状态以及它们在做什么。

    【讨论】:

    • 感谢您的创意!可能有一些东西使文件保持打开状态,我将添加一些额外的步骤,以确保在使用 signtool 签名之前文件已准备好供阅读。
    猜你喜欢
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2018-02-15
    • 1970-01-01
    • 1970-01-01
    • 2021-01-13
    • 2013-06-12
    • 1970-01-01
    相关资源
    最近更新 更多