This section of the archives stores flipcode's complete Developer Toolbox collection, featuring a variety of mini-articles and source code contributions from our readers.

 

  Automatically Updating Build Version Number (MSVC)
  Submitted by



I have spent today looking for a way to automatically update the built number of an application after a succesful built. I started out naively assuming that there would be a simple checkbox labeled 'Increment Build Number Automaticaly'....silly me ;)

However, after searching around on the web I did find some solutions to the problem. Most of them had a few problems however:
  • You needed one or more extra .h files
  • You needed to invoke a special command to build
  • Built numbers were also incremented on unsuccesful builts
  • Difficult to implement (for me at least)


  • However, I did find some good reference materials that bypassed some of these problems. One is a VBScript from Thomas Mahler, found at CodeGuru (link) Which doesn't need extra .h files, but suffers from the other two problems. The other is a Microsoft Knowledge Base article about built numbers, (link) Which does need .h files but solves the other two.

    Combining them was easy, so I now post a macro that solves all three problems and should be easy to use:





    sub Application_BuildFinish(nNumErrors, nNumWarnings)
    'DESCRIPTION: Event to increase version counter in rc script after
    succesfull builds. (c)'2002 by Stijn de Witt, modified from code by Th. Mahler, 1998
       if nNumErrors <= 0 then
        'OPEN THE PROJECTS RESOURCE SCRIPT
        Documents.Open (ActiveProject.Name + ".rc"), "Text"
        Windows(ActiveProject.Name + ".rc").Active = True

    'SELECT BUILD NUMBER FROM PRODUCTVERSION ' Find line with PRODUCTVERSION Information ActiveDocument.Selection.FindText "PRODUCTVERSION", dsMatchForward + dsMatchFromStart + dsMatchCase ' Move to eol ActiveDocument.Selection.EndOfLine ' Mark Build Number ActiveDocument.Selection.WordLeft 1 ' Store in strVersion Dim strVersion strVersion = ActiveDocument.Selection.Text

    'INCREASE BUILD NUMBER AND REPLACE OLD ONE ActiveDocument.Selection.ReplaceText strVersion , strVersion+1 strVersion = strVersion + 1

    'NOW DO THE SAME FOR FILEVERSION, ProductVersion AND FileVersion 'START WITH FILEVERSION ' Find line with FILEVERSION Information ActiveDocument.Selection.FindText "FILEVERSION", dsMatchForward + dsMatchFromStart + dsMatchCase ' Move to eol ActiveDocument.Selection.EndOfLine ' Mark Build Number ActiveDocument.Selection.WordLeft 1 ' Store in strTmp Dim strTmp strTmp = ActiveDocument.Selection.Text ' Replace old build number with new ActiveDocument.Selection.ReplaceText strTmp , strVersion

    'THEN UPDATE ProductVersion ' Find line with ProductVersion Information ActiveDocument.Selection.FindText "VALUE ""ProductVersion"",", dsMatchForward + dsMatchFromStart + dsMatchCase ' Move to eol and then to end of build number ActiveDocument.Selection.EndOfLine ActiveDocument.Selection.CharLeft dsMove, 3 ActiveDocument.Selection.WordLeft 1 ' Store in strTmp strTmp = ActiveDocument.Selection.Text ' Replace old build number with new ActiveDocument.Selection.ReplaceText strTmp , strVersion

    'FINALLY UPDATE FileVersion ' Find line with FileVersion Information ActiveDocument.Selection.FindText "VALUE ""FileVersion"",", dsMatchForward + dsMatchFromStart + dsMatchCase ' Move to eol and then to end of build number ActiveDocument.Selection.EndOfLine ActiveDocument.Selection.CharLeft dsMove, 3 ActiveDocument.Selection.WordLeft 1 ' Store in strTmp strTmp = ActiveDocument.Selection.Text ' Replace old build number with new ActiveDocument.Selection.ReplaceText strTmp , strVersion

    'CLOSE FILE, BUILD APP AND SAVE ALL DOCUMENTS ' Close RC file ActiveDocument.Close() ' Save documents Documents.SaveAll true PrintToOutputWindow "Successfully built " & ActiveProject.Name & "version " & strVersion end if end sub


    The macro hooks to an event that MSVC fires after the built is completed. It checks if the built was succesful, then opens the project resource file to update the version information. It still suffers from the minor glitch that if the resource file is already open, a popup box appears saying that it will be closed. This could probably be solved to, so please let me know if you do.

    The zip file viewer built into the Developer Toolbox made use of the zlib library, as well as the zlibdll source additions.

     

    Copyright 1999-2008 (C) FLIPCODE.COM and/or the original content author(s). All rights reserved.
    Please read our Terms, Conditions, and Privacy information.