从代码中设置Delphi 7项目的“版本信息”?

12

是否可以通过代码设置“版本信息”设置?我想设置版本编号和“备注”属性的值,而不使用项目选项对话框。


1
你能详细说明一下吗?你真的想在编译后更改EXE版本吗?这样做可能会让你的应用程序被误认为是某种恶意软件!或者你只是想在编译时改变它一次?或者是在编译之后立即更改? - Cosmin Prund
我不想在编译之后再进行更改。我只想在代码中设置编译值。 - devployment
5个回答

10

与其编辑IDE为您管理的二进制RES文件,您可能会发现维护包含版本信息资源的文本RC文件更容易。编写资源脚本文件,然后使用类似于此行的方式将其包含在项目中:

{$R resources.res resources.rc}

您应该从项目的DPR文件中删除{$R *.RES}行,否则将会得到重复的版本资源。不要使用您的项目名称作为自定义资源文件的名称;该名称由IDE保留。

IDE管理的资源文件还包含项目图标,因此您需要在您的资源脚本中包含它。

您可以手动编辑资源脚本,也可以编写程序来编辑或重新生成它作为构建步骤之一。

使用文本资源脚本的附加副作用是,在您使用像CVS这样的源代码控制系统跟踪更改时更容易跟踪。


2
+1 我们目前在 .bdsproj 和 .res 文件中使用版本信息,这是一场噩梦。它使合并变得麻烦。我们有一个分支创建者,可以更改版本信息并检查回 svn,所以这不是问题,但当我们尝试稍后合并时,我们会付出昂贵的代价。99% 的更改都是 .bdsproj 和 .res 文件!我们将转而采用 .rc 方法。 - Chris Thornton
3
您可以在项目选项中简单地禁用包含版本信息,这样就不会出现重复的资源错误,同时还能够设置默认.res文件中设置的其他数据。 - user160694
3
请注意,当您移除{$ *.res}时,主应用程序图标也会丢失,该图标是由项目选项设置的,您需要使用 .rc 文件自己包含一个图标。 - Marjan Venema
看起来像是我正在寻找的东西。不幸的是,如果我尝试构建项目,就会收到错误消息。这是我所做的:
  • 创建一个txt文件并将其保存为versioninfo.res
  • res文件的内容:http://bit.ly/cH70KN
  • 将其链接为资源文件{$R versioninfo.res}
错误消息是:[Error] RLINK32:文件“...\versioninfo.res”中有不支持的16位资源您有什么想法我做错了什么吗?
- devployment
2
也许在 $R 指令中需要引用文件名加上引号?我不确定。较新版本的 Delphi(我不知道到底是哪个版本)允许您简单地将 RC 文件添加到项目中:在项目管理器中,使用“添加文件”命令即可。IDE 将为您处理其余语法。 - Rob Kennedy
显示剩余3条评论

4

4
我建议使用构建工具,例如我经常使用的FinalBuilder,它可以根据适当的方案为您完成此操作。然后您就知道构建选项都符合您的要求,数字也会适当增加,您还可以上传到FTP站点等其他操作。在我的脚本中,构建号从EXE到安装程序一路包含在内。

3

你需要编写向导。查看 IOTAProjectOptionsD7IOTA.HLP 文件中,ToolsAPI 单元的源代码以及这个帖子


2
为什么会有负评?这个答案实际上提供了最直接回答问题的方式!好的,原来提问者想要的是另外一件事,但是这个答案不应该因此而被负评!如果有什么不对的话,应该是那个问题本身。(StackOverflow 或许应该针对问题提供两种排名:一个是问题本身,另一个是问题提出的方式/清晰度/是否符合需要回答的实际问题等等) - Deltics
也许,我的解决方案看起来太复杂了 :-) 无论哪种IDE都要么独占项目资源,要么用户必须手动处理。这是实现无缝集成的唯一方法。 - Free Consulting
@DaveNottage,不要存档。链接失效太讨厌了! - Free Consulting

0

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