Re[2]: Как узнать версию в RunTime ?
От: maslovsky  
Дата: 23.04.01 06:41
Оценка:
Здравствуйте VLK, 22.04.2001 06:08:35 вы писали:

>

>-----------------------------------------------------------
>GetFileVersionInfo
>VerQueryValue
>
>Работа со структурами переменной длины. Вообще эта информация предусмотрена для программ инсталляции. Однако, ничего не мешает использовать ее здесь...

Есть еще до безобразия простой вариант — задать версию через #define в каком-нибудь заголовке, а потом подставлять везде где можно, в том числе и в ресурсах.

version.h

#define VER_MAJOR 1
#define VER_MINOR 0
#define BUILD_MAJOR 0
#define BUILD_MINOR 0

#define FILEVER VER_MAJOR,VER_MINOR,BUILD_MAJOR,BUILD_MINOR
#define PRODUCTVER VER_MAJOR,VER_MINOR,0,0

#define STR_VER_MAJOR "1"
#define STR_VER_MINOR "0"
#define STR_BUILD_MAJOR "0"
#define STR_BUILD_MINOR "0"

resource.rc2
...
#include "Version.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION FILEVER
PRODUCTVERSION PRODUCTVER
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x21L
#else
FILEFLAGS 0x20L
#endif
FILEOS 0x40004L
FILETYPE 0x1L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "Build", STR_BUILD
VALUE "Comments", "\0"
VALUE "CompanyName", "My Company\0"
VALUE "FileDescription", "\0"
VALUE "FileVersion", STR_FILEVER
... <skipped>

Более того, используя макросы или addin'ы в VC, можно изменять версию в version.h автоматически при каждой сборке.

Единственная проблема — проходится объявлять циферки дважны — один раз как цифры, другой раз как строки. У меня не получилось заставить препроцессор конвертнуть цифру в строку...

Удачи,
Антон
Удачи,
Антон
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.