如何增加后每个版本的 Visual c + + 版本信息

http://support.microsoft.com/kb/237870


创建新项目时使用 MFC (EXE) 应用程序向导,并调用它我的项目我的项目将 MyProject.rc 文件,其中包括 MyProject.rc2。.Rc2 文件用于用户定义的资源。请按照下列步骤,以增加每次生成后我的项目的版本信息:

  1. 从.rc 文件中删除版本资源并将其放置在.rc2 文件中:

    1. 在文本编辑器中打开 MyProject.rc 和 MyProject.rc2 (Res 文件夹中找到)。若要使用 Visual c + + 编辑器中,单击文件菜单上的打开,并在 MyProject.rc 文件打开方式列表中选择文本
    2. 在 MyProject.rc 中找到的版本资源语句。它应如下所示:
      /// 
      // 
      // Version
      // 
      
      VS_VERSION_INFO VERSIONINFO
       FILEVERSION 1,0,0,1
       PRODUCTVERSION 1,0,0,1
       FILEFLAGSMASK 0x3fL
      #ifdef _DEBUG
       FILEFLAGS 0x1L
      #else
       FILEFLAGS 0x0L
      #endif
       FILEOS 0x4L
       FILETYPE 0x1L
       FILESUBTYPE 0x0L
      BEGIN
          BLOCK "StringFileInfo"
          BEGIN
              BLOCK "040904b0"
              BEGIN
                  VALUE "Comments", "Sample Application\0"
                  VALUE "CompanyName", "Microsoft Corp.\0"
                  VALUE "FileDescription", "MyProject MFC Application\0"
                  VALUE "FileVersion", "1, 0, 0, 1\0"
                  VALUE "InternalName", "MyProject\0"
                  VALUE "LegalCopyright", "Copyright (C) 1999\0"
                  VALUE "OriginalFilename", "MyProject.EXE\0"
                  VALUE "ProductName", "MyProject Application\0"
                  VALUE "ProductVersion", "1, 0, 0, 1\0"
              END
          END
          BLOCK "VarFileInfo"
          BEGIN
              VALUE "Translation", 0x409, 1200
          END
      END
      							
    3. 剪切从 MyProject.rc 文件版本资源并将其粘贴到一则评语下面的 MyProject.rc2 文件"添加手动编辑此资源。有关资源中的字段中的每一个含义的详细内容,请参阅帮助中的 VERSIONINFO 资源语句。
  2. 替换宏 FILEVER 和 PRODUCTVER 的文件和产品数据。同样,替换宏 STRFILEVER 和 STRPRODUCTVER 的文件和产品字符串数据。
  3. 添加 # VS_VERSION_INFO 资源语句前立即包括VersionNo.h 。现在版本资源看起来:
    /// 
    // 
    // Version
    // 
    #include "VersionNo.h"
    VS_VERSION_INFO VERSIONINFO
     FILEVERSION FILEVER
     PRODUCTVERSION PRODUCTVER
     FILEFLAGSMASK 0x3fL
    #ifdef _DEBUG
     FILEFLAGS 0x1L
    #else
     FILEFLAGS 0x0L
    #endif
     FILEOS 0x4L
     FILETYPE 0x1L
     FILESUBTYPE 0x0L
    BEGIN
        BLOCK "StringFileInfo"
        BEGIN
            BLOCK "040904b0"
            BEGIN
                VALUE "Comments", "Sample Application\0"
                VALUE "CompanyName", "Microsoft Corp.\0"
                VALUE "FileDescription", "MyProject MFC Application\0"
                VALUE "FileVersion", STRFILEVER
                VALUE "InternalName", "MyProject\0"
                VALUE "LegalCopyright", "Copyright (C) 1997\0"
                VALUE "OriginalFilename", "MyProject.EXE\0"
                VALUE "ProductName", "MyProject Application\0"
                VALUE "ProductVersion", STRPRODUCTVER
            END
        END
        BLOCK "VarFileInfo"
        BEGIN
            VALUE "Translation", 0x409, 1200
        END
    END
    					
  4. 创建与您的项目位于同一目录中名为 VersionNo.h 的头文件。此文件将包含以下语句,将使用在步骤 2 中的宏的定义:
    #define FILEVER        1,0,0,1
    #define PRODUCTVER     1,0,0,1
    #define STRFILEVER     "1, 0, 0, 1\0"
    #define STRPRODUCTVER  "1, 0, 0, 1\0"
    						
    注意: 添加换行符和回车换行符的最后一行。

    现在,MyProject.rc 文件包含 MyProject.rc2,并且 MyProject.rc2 文件包含 VersionNo.h。
  5. 将使用 Visual Basic 脚本宏修改 VersionNo.h 文件的内容。宏描述控点的下方 Visual c + + BuildFinish 事件,因此它将不激发直到生成完成。每当调用此 VB 脚本代码时,它首先按固定金额、 增加内部的头文件的版本号,然后保存该文件,并将其关闭。在后续的生成过程中可执行文件中包含新的版本号。

    要安装并使用 VB 脚本代码,请执行以下操作:

    1. 打开现有的 DSM (宏观) 文件,或在 Visual c + + 中创建一个新的 DSM 文件。要创建一个新文件,请单击文件菜单上的新建文件选项卡上选择的宏文件、 为其指定一个名称,和单击确定
    2. 粘贴下面的以下 VB 脚本代码 (在 Visual c + + 中,无法安装空 DSM 文件 ; 下一步解释安装):
      Function GetProjectDir(FullName)
      
      'VC++ doesn't provide any method for getting the path of the active project
      'See the VB Script reference for more information on the VB Script functions 
      'used in this function
      
      Dim proj_path
      proj_path = Split(StrReverse(FullName),"\",-1,1)
      
      Dim count
      count = UBound(proj_path)
      
      Dim full_path
      full_path = ""
      Dim i
      
      for i = 1 to count 
      	full_path = full_path & "\" & proj_path(i)
      next
      
      GetProjectDir = StrReverse(full_path)
      
      End Function
      
      
      Sub ReplaceText(selection, count, incrementby)
      
      'selection represents the TextSelection object
      'count represents the position of the version number to be incremented
      'incrementby represents a number that will be added to the existing version number
      
      selection.WordRight dsMove, count
      selection.WordRight dsExtend, 1
      Dim str
      str = selection.Text
      str = str + incrementby
      
      selection.Text = str
      
      End Sub
      
      
      Sub Application_BuildFinish(numError, numWarning)
      
      'This event will be triggered after every build of a project
      'You can check numError and/or numWarning to determine if you want to continue
      'If numError <> 0 Then
          'exit sub
      'Obtain the full path of the active project
      Dim full_path
      full_path = GetProjectDir(ActiveProject.FullName)
      
      full_path = full_path & "versionno.h"
      
      'Open the VersionNo.h file
      Documents.Open full_path
      
      'Obtain the TextSelection object
      Dim selection
      set selection = ActiveDocument.Selection
      selection.StartOfDocument 
      
      'Increment the version information
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 9, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      selection.LineDown
      selection.StartOfLine
      ReplaceText selection, 10, 1
      
      ActiveDocument.Save
      ActiveDocument.Close
       
      End Sub
      								
      注:此代码是不受支持的示例。为您生成的方案,您可以修改它。
    3. 如果未安装,请安装 DSM 文件。要安装,请在工具菜单上单击自定义、 单击加载项和宏文件选项卡、 浏览以选择 DSM 文件中,并单击关闭
  6. 生成菜单中选择生成 MyProject.exe 。生成完成后,打开 VersionNo.h 文件。它将包含以下语句:
    #define FILEVER        1,0,0,2
    #define PRODUCTVER     1,0,0,2
    #define STRFILEVER     "1, 0, 0, 2\0"
    #define STRPRODUCTVER  "1, 0, 0, 2\0"
    						
    如果您生成代码再次中的此版本信息包含在可执行文件和版本信息就会增加。您可以引入宏前面所述防止递增的版本号,如果生成产生错误中的某些代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值