在 Delphi 项目的后期构建事件中使用 signtool.exe 的帮助

7
这是一个非常简单的问题。在Delphi的构建后事件中,我应该写什么来执行命令行工具?
我写了以下内容:
c:\BinPath\signtool.exe sign /f c:\BinPath\Mypfxfile.pfx /p MyPassword 
/t http:// timestamp.verisign.com/scripts/timstamp.dll c:\BinPath\Project1.exe

(其中 c:\BinPath 是 Delphi 输出路径,为简单起见,我将 signtool.exe 和 pfx 文件复制到了同一个文件夹中)

当我构建项目时,出现了这个模态窗口错误:

--------------------------- Project 1- CodeGear Delphi for Microsoft Windows - Form1 --------------------------- Cannot open file "C:\SourcePath\EXEC". Impossible to find the specified path.

而在消息中我看到:

[Exec Error] EXEC(1): "SignerTimeStamp() failed." (-2147467259/0x80004005)

[Exec Error] exit from command "c:\BinPath\signtool.exe sign /f c:\BinPath\Mypfxfile.pfx /p MyPassword /t http:// timestamp.verisign.com/scripts/timstamp.dll c:\BinPath\Project1.exee" with code 1.

如何解决这个问题?在 Delphi 帮助文档中(来自 创建构建事件 主题)我读到:

输入构建命令,每行一个命令,在输入每个命令后按 Return 键。命令由任何有效的 DOS 命令组成,例如:copy $() c:\Built\$()

所以我在构建事件中简单地插入了我可以从命令提示符运行的内容(c:\BinPath\....Project1.exe),但是出现了错误。问题出在哪里呢?谢谢。

1个回答

6

我本可以删除这个问题,因为我已经找到了问题所在,但是我认为最好还是留下来,因为它可能对其他人有用:

问题非常简单:

http:// timestamp...

当然应该是这样的。
http://timestamp...

在构建事件中复制时,我不小心插入了一个额外的空格。通过阅读发布的问题,我发现了这个错误...


2
经常提问就能回答问题。在Q和A中都+1,不要删除它们:这些“duh”时刻很重要,因为它们每隔一段时间就会发生在我们所有人身上。我并不为它们感到羞耻(就在前几天,我调用了一个期望PAnsiChar与PUnicodeChar的DLL函数——多么“duh”啊<g>),我很高兴其他人也不是。 - Jeroen Wiert Pluimers
@vcldeveloper:Stack Overflow 告诉我,我可以在2天内接受自己的答案。 - UnDiUdin
@Jeroen 是的。我们通过犯错误来学习。有时候我们需要别人告诉我们我们的错误,有时候我们只需要自己,在这种情况下我感到很自在(“duh”时刻,但也是“我做到了”的时刻)... - UnDiUdin

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