如何在编译时自动为.exe提供唯一的名称?

时间:2010-10-16 00:53:04

标签: delphi delphi-2010

我想在编译时给出'ProgramExeName +版本号'的应用程序的exe名称(例如:Filename18190.exe,Filename18191.exe ...) - 所以exe名称永远不会相同。考虑到我将版本号放在str变量中,如何自动将此数字附加到当前构建的exe名称? Tx

(注意:我希望重命名在编译时完成,之后不要操作)

5 个答案:

答案 0 :(得分:3)

有几个指令可以操作输出二进制{$EXT string}{$LIBPREFIX 'string'}{$LIBSUFFIX 'string'}{$LIBVERSION 'string'}(btw,编译器)的文件名与形成输出二进制,由链接器完成。它们都不是动态的,因此您必须在构建项目之前编写所需的值(在IDE中为OpenToolAPI向导做好工作)。

另一种可能性是构建后活动,它从PE二进制文件中提取版本号(例如:VERSION_INFO)并相应地重命名文件

答案 1 :(得分:1)

如果必须由编译器完成,那么不,Delphi根本就不会这样做。 exe的名称是项目的名称。在构建之后运行批处理文件(我相信稍后delphi允许你这样做)并将文件重命名为你想要的任何内容。您可能需要创建一个单独的帮助程序,以从程序的资源中提取构建号,以便您可以在名称中使用它。

答案 2 :(得分:1)

文件名是从项目文件自动生成的,你无法改变它。但是看看后期构建事件,也许你可以找出在成功构建后改变文件名的东西

答案 3 :(得分:0)

您可以编写批处理文件/ makefile / Rakefile /运行编译步骤的任何内容,然后根据系统时间或类似情况重命名它。你的问题有点模糊,所以很难准确地说,但这是一个想法。

答案 4 :(得分:0)

在Delphi中无法为正常的可执行文件执行此操作。对于软件包,有LIB后缀选项,可能会被操作以执行您想要的操作,但这对您没有帮助。

嗯,考虑一下,也许有可能编写一个IDE插件,每次进行构建时都使用ToolsAPI以不同的名称保存项目。您最终会得到与可执行文件一样多的项目文件。我不知道是否可以做到。