Программно обновляем FILEVERSION в приложении MFC с номером версии SVN - PullRequest
7 голосов
/ 20 сентября 2008

Как мне программно обновить строку FILEVERSION в приложении MFC? У меня есть процесс сборки, который я использую для генерации заголовочного файла, который содержит версию SVN для данного выпуска. Я использую SvnRev из http://www.compuphase.com/svnrev.htm для обновления файла заголовка, который я использую для установки панели заголовков моего приложения MFC. Теперь я хочу использовать этот #define для моей информации FILEVERION.

Как лучше поступить?

Ответы [ 5 ]

13 голосов
/ 20 сентября 2008

Файл .rc может #include заголовочные файлы, как и .c файлы. У меня есть автоматически сгенерированный файл version.h, который определяет такие вещи, как:

#define MY_PRODUCT_VERSION    "0.47"
#define MY_PRODUCT_VERSION_NUM 0,47,0,0

Тогда у меня просто есть .rc файл #include "version.h" и я использую эти определения.

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

Я не пробовал эту технику с проектом MFC. Может потребоваться переместить ресурс VS_VERSION_INFO в файл .rc2 (который не будет редактироваться Visual Studio).

3 голосов
/ 08 апреля 2009

Пока не хватает комментариев, но какое бы решение вы ни выбрали, имейте в виду, что поля FILEVERSION могут поддерживать только короткое целое число. В нашей ситуации наша версия SVN уже была выше этого и привела к неверному номеру версии в нашей ФАЙЛОВЕРСИИ.

1 голос
/ 20 сентября 2008

В вашем файле application.rc есть блок версии. Этот блок управляет информацией о версии, отображаемой в файловой системе.

VS_VERSION_INFO VERSIONINFO
FILEVERSION 1,0,0,1
PRODUCTVERSION 1,0,0,1

Вы можете программно обновить этот файл. Обязательно откройте и сохраните файл как двоичный файл. У нас были проблемы, когда редактирование выполнялось как текст, а файл был поврежден.

0 голосов
/ 22 декабря 2008

Может быть, это может быть полезно: Управление версиями

0 голосов
/ 20 сентября 2008

Изменение VS_VERSION_INFO отобразится, когда вы щелкнете правой кнопкой мыши по файлу в Проводнике и увидите только свойства.

Если вы хотите показать текущий номер редакции SVN в строке заголовка, я бы предложил:

  • Пусть скрипт получит номер версии и сгенерирует файл version.h только с помощью
#define SVN_VERSION_NO  xxx
  • Ваш проект включает этот version.h и использует этот номер для отображения в заголовке.
...