【问题标题】:Programmatically updating FILEVERSION in a MFC app w/SVN revision number以编程方式更新具有 SVN 修订号的 MFC 应用程序中的 FILEVERSION
【发布时间】:2008-09-20 18:12:48
【问题描述】:

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

最好的方法是什么?

【问题讨论】:

    标签: windows svn mfc versioninfo


    【解决方案1】:

    .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 "\0"
     VALUE "ProductVersion", MY_PRODUCT_VERSION "\0"
    ...
    

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

    【讨论】:

      【解决方案2】:

      还没有足够的评论点,但无论您选择什么解决方案,请记住 FILEVERSION 字段只能支持短整数。在我们的情况下,我们的 SVN 版本已经高于这个值,导致我们的 FILEVERSION 中的版本号无效。

      【讨论】:

      • 好点,也许您应该将 revnum 拆分为 1000 和单位;或使用版本块中的其他字段之一来存储 revnum(作为字符串)。
      【解决方案3】:

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

      VS_VERSION_INFO 版本信息
      文件版本 1,0,0,1
      产品版本 1,0,0,1

      您可以通过编程方式更新此文件。确保打开文件并将其保存为二进制文件。我们遇到了以文本形式进行编辑并且文件损坏的问题。

      【讨论】:

        【解决方案4】:

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

        如果您想在标题栏中显示当前的 SVN 修订号,我建议:

        • 有一个脚本获取版本号并生成 version.h 文件,只需使用
        #define SVN_VERSION_NO  xxx
        
        • 您的项目包含此 version.h 并使用该编号显示在标题中。

        【讨论】:

          【解决方案5】:

          也许这会有所帮助:Versioning Controlled Build

          【讨论】:

            猜你喜欢
            • 2014-04-09
            • 1970-01-01
            • 2010-09-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-19
            相关资源
            最近更新 更多