如何通过在Delphi中包含exe的数字签名来自动化多个项目的构建过程?

时间:2010-05-13 07:38:20

标签: delphi build-automation delphi-2009

在使用Delphi(2009)构建了一个包含2个项目的项目组之后,我使用InstallAware Code签名对这两个exes进行了数字签名,这是Delphi 2009附带的一个exe。

如何自动化数字签名,所以当我构建时,我也可以附加数字签名。

对于数字签名,我使用pvk(私钥)文件和spc(Sw发布者证书)文件。

Subquestion:此外我创建了一个项目组,因为我有两个exes,但它们几乎相同,唯一改变的是Application图标和应用程序名称(一个是ProductOne.dpr,另一个是ProductTwo.dpr) )。

在实践中,我有两个相同产品的品牌,我有一个构建但激活密钥详细信息激活一个或另一个,无论如何现在我被要求更改图标和文件名,为此我需要构建2项目,激活密钥不再足以区分2.无论如何,如果有一种方法可以从单个项目中做到这一点,那就更好了。

3 个答案:

答案 0 :(得分:7)

第一部分:
我们使用FinalBuilder脚本操作对可执行文件进行编码编码,但使用命令行可以实现相同的操作:

signtool sign /f cert-file.pfx /p pwd /d "MyApp description" /du "http://www.your-url-here.com/" /t "http://timestamp.globalsign.com/timstamp.dll" MyApp.exe

signtool来自MS Windows SDK,也可以使用本地计算机证书存储中的证书。有关不同形式证书所需的细微更改,请参阅链接的文档页面 我猜这可以放在项目的后期构建事件中。每次完成构建时它都会运行。

不知道问题的第二点 - 虽然我想我会倾向于使用像FinalBuilder这样的第三方工具(再次)来管理图标/资源的交换等,并进行实际构建。

答案 1 :(得分:4)

为了签署我的exe,我正在使用“signtool”,你已经有了命令行从shunty签署你的exe。

更改exe的图标我正在使用“ResHacker.exe”:这是一个小型免费软件应用程序,可以从命令行自动执行,因此它可以与任何构建自动化软件一起使用。这是一个示例命令行:

"C:\Path\ResHacker.exe" -modify "D:\PathToExe\ExeName.exe", "D:\PathToExe\ExeName.exe", "C:\PathToIco\IcoName.ico", ICONGROUP, MAINICON,

请勿删除任何逗号!

它绝对正常。为了自动化,我正在使用FinalBUilder,并且我从一个脚本生成一个应用程序的四(四)个版本,每次重新构建,因此我可以使用不同的编译器指令,然后我将图标更改为套件版本,签署所有内容,构建设置,签署设置,存档设置,最后将我的设置上传到我的“测试版”网站(不是我们的官方网站,只有一些人知道的其他网站)

答案 2 :(得分:3)

我会使用Kinook的Visual Build Pro(我认为他们是SO广告客户)来自动编译和签名。它可以直接签名,不需要SignTool。

第2部分对于ResHacker来说听起来不错,可用于替换应用内的资源。这必须在签署之前完成。