pepr
asked on
How to make some of the Windows App.rc file a kind of more persistent? (Version section)
Hi,
I am using Microsoft Visual Studio 2008 and its VC++ 9 to build the application. The App.rc resource file contains the VERSIONINFO section like this
////////////////////////// ////////// ////////// ////////// ////////// ////////// /
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,5,0,310
PRODUCTVERSION 3,5,0,310
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x29L
#else
FILEFLAGS 0x28L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
VALUE "Comments", "The tool..."
VALUE "CompanyName", "Company, ltd."
VALUE "FileDescription", "TheApplication"
VALUE "FileVersion", "3.5.0.310o6-mp1"
VALUE "InternalName", "App"
VALUE "LegalCopyright", "Copyright © 1993-2009"
VALUE "OriginalFilename", "App.exe"
VALUE "ProductName", "App 3"
VALUE "ProductVersion", "3.5.0.310o6-mp1"
VALUE "SpecialBuild", "o6-mp1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0, 1200
END
END
========================== ========== ========== ========== ========== ========== =======
... The application uses also version.inc file to capture the information about the version separately. The idea was change slightly its content...
#define APP_MAJORNUMBER 3
#define APP_MINORNUMBER 5
#define APP_MODIFICATIONNUMBER 0
#define APP_BUILDNUMBER 310
#define APP_BUILDEXT "o6-mp1"
#define APP_DATEYEAR 2009
#define APP_DATEMONTH 3
#define APP_DATEDAY 31
... and use it directly for dynamic change of the App.rc file -- see the snippet below.
However, it is replaced again later by the above content when working with the App.rc file via tools in Visual Studio IDE (not touching the Version information in the resource editor). Do you know any way to solve the problem?
Thanks,
Petr
I am using Microsoft Visual Studio 2008 and its VC++ 9 to build the application. The App.rc resource file contains the VERSIONINFO section like this
//////////////////////////
//
// Version
//
VS_VERSION_INFO VERSIONINFO
FILEVERSION 3,5,0,310
PRODUCTVERSION 3,5,0,310
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x29L
#else
FILEFLAGS 0x28L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
VALUE "Comments", "The tool..."
VALUE "CompanyName", "Company, ltd."
VALUE "FileDescription", "TheApplication"
VALUE "FileVersion", "3.5.0.310o6-mp1"
VALUE "InternalName", "App"
VALUE "LegalCopyright", "Copyright © 1993-2009"
VALUE "OriginalFilename", "App.exe"
VALUE "ProductName", "App 3"
VALUE "ProductVersion", "3.5.0.310o6-mp1"
VALUE "SpecialBuild", "o6-mp1"
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0, 1200
END
END
==========================
... The application uses also version.inc file to capture the information about the version separately. The idea was change slightly its content...
#define APP_MAJORNUMBER 3
#define APP_MINORNUMBER 5
#define APP_MODIFICATIONNUMBER 0
#define APP_BUILDNUMBER 310
#define APP_BUILDEXT "o6-mp1"
#define APP_DATEYEAR 2009
#define APP_DATEMONTH 3
#define APP_DATEDAY 31
... and use it directly for dynamic change of the App.rc file -- see the snippet below.
However, it is replaced again later by the above content when working with the App.rc file via tools in Visual Studio IDE (not touching the Version information in the resource editor). Do you know any way to solve the problem?
Thanks,
Petr
/////////////////////////////////////////////////////////////////////////////
//
// Version
//
#include "version.inc"
#define STR(value) #value
#define STRINGIZE(value) STR(value)
#define APP_FULLVERSION_STR \
STRINGIZE(APP_MAJORNUMBER) "." \
STRINGIZE(APP_MINORNUMBER) "." \
STRINGIZE(APP_MODIFICATIONNUMBER) "." \
STRINGIZE(APP_BUILDNUMBER) \
APP_BUILDEXT
VS_VERSION_INFO VERSIONINFO
FILEVERSION APP_MAJORNUMBER,APP_MINORNUMBER,APP_MODIFICATIONNUMBER,APP_BUILDNUMBER
PRODUCTVERSION APP_MAJORNUMBER,APP_MINORNUMBER,APP_MODIFICATIONNUMBER,APP_BUILDNUMBER
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x29L
#else
FILEFLAGS 0x28L
#endif
FILEOS 0x4L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "000004b0"
BEGIN
VALUE "Comments", "The tool..."
VALUE "CompanyName", "Company, ltd."
VALUE "FileDescription", "TheApplication"
VALUE "FileVersion", APP_FULLVERSION_STR
VALUE "InternalName", "App"
VALUE "LegalCopyright", "Copyright © 1993-" STRINGIZE(APP_DATEYEAR)
VALUE "OriginalFilename", "App.exe"
VALUE "ProductName", "App 3"
VALUE "ProductVersion", APP_FULLVERSION_STR
VALUE "SpecialBuild", APP_BUILDEXT
VALUE "PrivateBuild", ""
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x0, 1200
END
END
ASKER
Thanks, Zoppo, for your fast reaction. Should I include the App.rc2 file into App.rc? I have added the App.rc2 to the Resource Files section in the project. However, it seems to be ignored.
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
This was simply the excelent answer. Exactly what I hoped for. Thanks a lot. ;)
You're welcome - I'm glad I could help.
Have a nice day,
best regards,
ZOPPO
Have a nice day,
best regards,
ZOPPO
you can try moving this code part from the '.rc' file to the '.rc2' file (if existing - if not you'll have to create and include one).
This '.rc2' file isn't touched by VS resource editors but is included while compiling resources.
Hope that helps,
ZOPPO