How do I go about programmatically updating the FILEVERSION string in an MFC app? I have a build process that I use to generate a header file which contains the SVN rev for a given release. I'm using SvnRev from http://www.compuphase.com/svnrev.htm to update a header file which I use to set the caption bar of my MFC app. Now I want to use this #define for my FILEVERION info.
What's the best way to proceed?
An .rc
file can #include
header files just like .c
files can. I have an auto-generated version.h
file, which defines things like:
#define MY_PRODUCT_VERSION "0.47"
#define MY_PRODUCT_VERSION_NUM 0,47,0,0
Then I just have my .rc
file #include "version.h"
and use those defines.
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"
...
I haven't tried this technique with an MFC project. It might be necessary to move your VS_VERSION_INFO
resource to your .rc2
file (which won't get edited by Visual Studio).
Don't have enough points to comment yet, but whatever solution you choose keep in mind that FILEVERSION fields can only support a short integer. In our situation, our SVN revision was already above this and resulted in an invalid revision number in our FILEVERSION.
In your application.rc file there is a version block. This block controls the version info displayed in the filesystem.
VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1
You can programmatically update this file. Make sure to open and save the file as binary. We have had issues where edits are done as text and the file gets corrupted.
Changing VS_VERSION_INFO
will reflect when you right click on the file in Explorer and see properties only.
If you want to show the current SVN revision number in the Caption bar, i would suggest:
- Have a script get the version number and generate version.h file just with
#define SVN_VERSION_NO xxx
- Your project includes this version.h and uses that number to show in caption.
Maybe this can be helpful: Versioning Controlled Build