通过SVN版本号在MFC应用中以编程方式更新FILEVERSION

时间:2020-03-06 14:29:23  来源:igfitidea点击:

如何以编程方式在MFC应用程序中更新FILEVERSION字符串?我有一个生成过程,用于生成一个头文件,该头文件包含给定版本的SVN修订版。我正在使用来自http://www.compuphase.com/svnrev.htm的SvnRev更新头文件,该文件用于设置MFC应用程序的标题栏。现在,我想将此#define用于我的FILEVERION信息。

最好的进行方法是什么?

解决方案

application.rc文件中有一个版本块。该块控制文件系统中显示的版本信息。

VS_VERSION_INFO     VERSIONINFO

  FILEVERSION       1,0,0,1

  PRODUCTVERSION    1,0,0,1

我们可以以编程方式更新此文件。确保打开文件并将其另存为二进制文件。我们曾遇到过这样的问题,即以文本形式进行编辑并且文件已损坏。

当我们在资源管理器中右键单击文件并仅查看属性时,更改" VS_VERSION_INFO"将反映出来。

如果要在标题栏中显示当前的SVN版本号,我建议:

  • 让脚本获取版本号并仅使用以下命令生成version.h文件
#define SVN_VERSION_NO  xxx
  • 项目包含此version.h,并使用该数字显示标题。

.rc文件可以包含#include头文件,就像.c文件可以一样。我有一个自动生成的version.h文件,它定义了以下内容:

#define MY_PRODUCT_VERSION    "0.47"
#define MY_PRODUCT_VERSION_NUM 0,47,0,0

然后,我只有我的.rc文件#include" version.h"并使用这些定义。

VS_VERSION_INFO VERSIONINFO
 FILEVERSION MY_PRODUCT_VERSION_NUM
 PRODUCTVERSION MY_PRODUCT_VERSION_NUM
...
 VALUE "FileVersion", MY_PRODUCT_VERSION "##代码##"
 VALUE "ProductVersion", MY_PRODUCT_VERSION "##代码##"
...

我没有在MFC项目中尝试过这种技术。可能需要将" VS_VERSION_INFO"资源移至" .rc2"文件(Visual Studio不会对其进行编辑)。

也许这会有所帮助:版本控制版本

尚无足够注释要注释,但是请注意,无论选择哪种解决方案,FILEVERSION字段都只能支持短整数。在我们的情况下,我们的SVN修订版已经超过了该修订版,并导致我们的FILEVERSION中的修订版号无效。