Можно ли как то в файлах *.RGS & *.IDL & *.RC подставлять нужный номер версии который определен например в файде version.h через #define?
В *.RGS & *.IDL нужно проставлять версию для интерфейсов. По возможности автоматом менять версию VS_VERSION_INFO в *.RC
Возможно ли такое реализовать на уровне компиляции? Или все же придется писать утилиту для парсинга исходников и подмены старой версии на новую, чего не хотелось бы делать.
Здравствуйте, Аноним, Вы писали:
А>Привет!
А>Можно ли как то в файлах *.RGS & *.IDL & *.RC подставлять нужный номер версии который определен например в файде version.h через #define?
А>В *.RGS & *.IDL нужно проставлять версию для интерфейсов. По возможности автоматом менять версию VS_VERSION_INFO в *.RC
А>Возможно ли такое реализовать на уровне компиляции? Или все же придется писать утилиту для парсинга исходников и подмены старой версии на новую, чего не хотелось бы делать.
/////////////////////////////////////////////////////////////////////////////
//
// Version
//#include"Version.h"
VS_VERSION_INFO VERSIONINFO
FILEVERSION PRODUCTVER
PRODUCTVERSION PRODUCTVER
FILEFLAGSMASK 0x3fL
#ifdef _DEBUG
FILEFLAGS 0x1L
#else
FILEFLAGS 0x0L
#endif
FILEOS 0x4L
FILETYPE 0x2L
FILESUBTYPE 0x0L
BEGIN
BLOCK "StringFileInfo"
BEGIN
BLOCK "040904b0"
BEGIN
VALUE "CompanyName", "Coca-Cola"
VALUE "FileDescription", "Coca-Cola ...."
VALUE "FileVersion", PRODUCTVERSTR
VALUE "InternalName", "Coca-Cola"
VALUE "LegalCopyright", COPYRIGHT
VALUE "OriginalFilename", "Coca-Cola.exe"
VALUE "ProductName", "Coca-Cola"
VALUE "ProductVersion", PRODUCTVERSTR
END
END
BLOCK "VarFileInfo"
BEGIN
VALUE "Translation", 0x409, 1200
END
END
Re[2]: *.RGS & *.IDL & *.RC & versions?
От:
Аноним
Дата:
17.04.06 10:12
Оценка:
Здравствуйте, Константин Л., Вы писали:
А версии в *.RGS и *.IDL так и оставляешь старыми?
Спасибо за *.RC, но необходимо также менять версии интерфейсов, не будут же они всегда 1.0
Здравствуйте, Аноним, Вы писали:
А>Здравствуйте, Константин Л., Вы писали:
А>А версии в *.RGS и *.IDL так и оставляешь старыми?
А>Спасибо за *.RC, но необходимо также менять версии интерфейсов, не будут же они всегда 1.0
> А>А версии в *.RGS и *.IDL так и оставляешь старыми? > > А>Спасибо за *.RC, но необходимо также менять версии интерфейсов, не > будут же они всегда 1.0 > > Оставляю
Можно немного извратиться на основе предложенного "version.h".
Нужно включить его в тот файл, что содержит модуль.
В соответсвующем RGS-файле прописать вместо захардкоденной версии что-то
типа
CurVer = s '%MyActualSuperPuperIntefaceVersion%'.
Затем в классе модуля перегружаешь
AddCommonRGSReplacements( IRegistrarBase* pRegistrar )
и в ней пишешь
pRegistrar->AddReplacement( L"MyActualSuperPuperIntefaceVersion%",
L"MyProg.MyInt.12345" );
Разумеется вместо "MyProg.MyInt.12345" композишь строку на основе того,
что имеется в вашем "version.h".
Плюс, нужно убедиться, что для модуля вызывается UpdateRegistryAppId или
что-то аналогичное.
Всё! Хотя в деталях мог немного и наврать, но, думаю, идея с
динамической подстановкой содержимого RGS-файлов ясна