Статьи и заметки

Version info и иконка приложения в Lazarus.
После продолжительных поисков альтернативы среде разработки Delphi мой выбор остановился на свободно распространяемом продукте под названием Lazarus. Данный продукт включает в себя среду разработки (собственно Lazarus) и компилятор FreePascal, также свободно распространяемый. После успешных попыток создания новых проектов, я попытался перенести в Lazarus уже готовый проект, разработанный в Delphi, что так же окончилось успехом, за исключением некоторых мелких моментов.
Итак, выбор был сделан и отныне все свои новые проекты я разрабатывал в Lazarus.
Конечно, по сравнению с Delphi у него есть много недостатков, пока мало компонентов, входящих в комплект поставки, но продукт развивается и, я надеюсь, у него прекрасное будущее. Об одной проблеме, с которой я столкнулся при переходе на Lazarus, я хочу написать.
С самого начала у меня не получалось вставить в проект иконку, которая отображалась бы в заголовке окна, и информацию о версии. Если без иконки можно было бы и обойтись, то без версии - очень тяжело, так как у меня есть несколько динамично развивающихся проектов и, чтобы отлавливать в них ошибки у заказчиков, необходимо знать версию используемой программы.
При включении в свойствах проекта опции "Include Version Info in executable" проект переставал компилироваться - появлялось сообщение об ошибке. При добавлении картинки в свойство Icon формы ничего не происходило - форма в скомпилированном приложении так и оставалось без иконки. Почитав форумы, я нашел способ добавить иконку - создать файл app.res, добавить в него иконку с помощью редактора ресурсов, а в файл проекта добавить строчку {$R app.res}. Проблема с иконкой была решена. Для решения проблемы с версией я начал разбираться из-за чего возникает ошибка при компиляции. После различных экспериментов выяснилось, что не удается запустить файл windres.exe. После добавления в переменную окружения path пути к этому файлу (в моем случае это c:\lazarus\fpc\2.0.4\bin\i386-win32), информация о версии стала добавляться в файл приложения. Но после этого опять пропала иконка приложения, так как файл ресурсов перезаписывался при каждой компиляции. В итоге, после изучения интернета и копания в исходниках, я нашел решение, которое позволило убить сразу двух зайцев: отредактировал файл app.rc. Файл получился вот таким:


MAINICON ICON "x:\projects\app\icon.ico"
1 VERSIONINFO
FILEVERSION 1,0,0,57
PRODUCTVERSION 1,0,0,46
{
BLOCK "StringFileInfo"
{
BLOCK "040904E4"
{
VALUE "Comments", "\000"
VALUE "CompanyName", "\000"
VALUE "FileDescription", "\000"
VALUE "FileVersion", "1.0.0.57\000"
VALUE "InternalName", "\000"
VALUE "LegalCopyright", "(с) VoLNa-soft 2007\000"
VALUE "LegalTrademarks", "\000"
VALUE "OriginalFilename", "\000"
VALUE "ProductName", "\000"
VALUE "ProductVersion", "1.0.0.46\000"
}
}
BLOCK "VarFileInfo"
{
VALUE "Translation", 0x0409, 0x04E4
}
}


После этого при компиляции в исполняемый файл стала включаться информация о версии и иконка приложения.

http://www.volna-soft.ru
16.05.2007 г.



© 2007-2012 ООО "Волна-софт".
Логотип ООО "Волна-софт"


Rambler's Top100 hosted by firstVDS