Programmatically updating FILEVERSION in a MFC app

2019-04-24 14:47发布

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?

5条回答
ゆ 、 Hurt°
2楼-- · 2019-04-24 15:12

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.

查看更多
叛逆
3楼-- · 2019-04-24 15:14

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.

查看更多
三岁会撩人
4楼-- · 2019-04-24 15:27

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).

查看更多
时光不老,我们不散
5楼-- · 2019-04-24 15:28

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.
查看更多
成全新的幸福
6楼-- · 2019-04-24 15:30

Maybe this can be helpful: Versioning Controlled Build

查看更多
登录 后发表回答