Delphi .res файловый чейнджер - PullRequest
8 голосов
/ 27 сентября 2010

Я ищу готовый фрагмент кода, который сможет читать и изменять файлы Delphi .res. Дело в том, что мне нужно создать приложение, которое будет компилировать много проектов Delphi одновременно (используя файл dcc32.exe). Однако мне необходимо изменить версию и язык файла перед компиляцией, и, насколько я знаю, для этого мне нужно изменить файл .res.

Вы встречали какой-либо код, который давал бы мне интерфейс к файлам .res, позволяя мне изменять содержащиеся в нем данные? Дело в том, что я хочу изменить только эти две части информации, оставив остальную часть неизменной. Вот почему я не могу скомпилировать свой собственный файл .res на основе сценария.

Приложение, выполненное из командной строки, также будет в порядке, если оно позволяет вызываться с параметрами и выполняет то, что мне нужно, чтобы сделать.

Спасибо, заранее!

Ответы [ 5 ]

10 голосов
/ 27 сентября 2010

Если вам нужно только добавить ресурс версии файла, то создайте файл appver.rc, скомпилируйте его с помощью brcc32 и в одном из модулей вашего приложения (например, appver.pas) добавьте {$R appver.res} (как заметила Мариан, вы должны отключить опцию проекта Delphi, чтобы включить информацию о версии).

Я создал программы командной строки, которые увеличивают номера сборки в файле .rc, создают новую ветку / тег в SVN с новой версией в имени ветви, компилируют .rc в .res и собирают приложение.

Мои .rc файлы с такой информацией (польский язык) выглядят так:

#define IDR_VERSION1  1
IDR_VERSION1 VERSIONINFO LOADONCALL MOVEABLE DISCARDABLE IMPURE
FILEVERSION 7,28,7,17
PRODUCTVERSION 7,28,7,17
FILEFLAGSMASK VS_FFI_FILEFLAGSMASK
FILEFLAGS 0
FILEOS VOS_DOS_WINDOWS32
FILETYPE VFT_DLL
FILESUBTYPE 0
{
 BLOCK "StringFileInfo"
 {
  BLOCK "041504E2"
  {
   VALUE "CompanyName", "xxx\0"
   VALUE "FileDescription", "yyy\0"
   VALUE "ProductName", "zzz\0"
   VALUE "FileVersion", "7.28.7.17\0"
   VALUE "ProductVersion", "7.28.7.17\0"
  }

 }

 BLOCK "VarFileInfo"
 {
  VALUE "Translation", 0x0415, 1250
 }

}
2 голосов
/ 27 сентября 2010

Существует ChangeRes , который, кажется, соответствует вашим потребностям.

2 голосов
/ 27 сентября 2010

По всем вопросам .res посмотрите «Редактор ресурсов XN» Колина Уилсона, для которого он предоставляет исходный код: http://www.wilsonc.demon.co.uk/d10resourceeditor.htm И, вероятно, все, что вам нужно, это его библиотека утилит ресурсов: http://www.wilsonc.demon.co.uk/d9resourceutils.htm Я не использовал этот источник, но если бы он мне понадобился, я бы посмотрел это в первую очередь. Его редактор ресурсов очень полезен, кстати.

2 голосов
/ 27 сентября 2010

Проверьте источники:

http://code.google.com/p/gedemin/source/browse/trunk#trunk/Gedemin/Utility/IncVerRC

Это наша утилита, которая читает файл .RC с информацией о версии и увеличивает номер сборки. Мы используем его в процессе сборки. Вот выдержка:

incverrc.exe ..\gedemin\gedemin.rc
"%delphi_path%\brcc32.exe" -fogedemin.res -i..\images gedemin.rc
"%delphi_path%\dcc32.exe" -b gedemin.dpr

Утилита использует класс TIncVerRc, написанный Крисом Моррисом.

1 голос
/ 27 сентября 2010

Проверьте консоль тюнера ресурсов на www.heaventools.com .Они позиционируют этот продукт для таких задач, как ваша.Также есть бесплатный инструмент rcstamp на CodeProject .

...