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?
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.
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.
An
.rc
file can#include
header files just like.c
files can. I have an auto-generatedversion.h
file, which defines things like:Then I just have my
.rc
file#include "version.h"
and use those defines.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).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:
Maybe this can be helpful: Versioning Controlled Build