代码之家  ›  专栏  ›  技术社区  ›  UnDiUdin

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

  •  2
  • UnDiUdin  · 技术社区  · 14 年前

    在用Delphi(2009)构建了一个由两个项目组成的项目组之后,我使用InstallAware代码签名(与Delphi2009一起提供的一个exe)对两个exes进行了数字签名。

    如何使数字签名自动化,因此在构建时,我还可以附加数字签名。

    对于数字签名,我使用pvk(私钥)文件和spc(sw-publisher证书)文件。

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

    实际上,我有两个相同产品的品牌,我有一个版本,但是激活码的细节激活一个或另一个,不管怎样,现在我被要求更改图标和文件名,为此我需要构建两个项目,激活码已经不足以区分这两个项目。不管怎样,如果有一种方法可以从一个项目中做到这一点,那就更好了。

    3 回复  |  直到 14 年前
        1
  •  6
  •   shunty    14 年前

    第一部分:
    我们使用 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(再次)来管理图标/资源的交换,以及进行实际的构建。

        2
  •  3
  •   Cosmin Prund    14 年前

    为了签署我的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,从一个脚本生成一个应用程序的4(四)个版本,每次都重新构建以便使用不同的编译器指令,然后我将图标更改为套件版本,签名所有内容,构建设置,签名设置,存档设置,最后将设置上载到“beta”“网站(不是我们的官方网站,只有一些人知道的其他网站)

        3
  •  2
  •   Chris Thornton    14 年前

    我将使用Kinook的VisualBuildPro(我认为他们是一个非常好的广告主)来自动编译和签名。它可以直接签名,不需要签名工具。

    第二部分听起来不错 ResHacker ,可用于替换应用程序中的资源。那必须在签字前完成。