Использование автономерации версий

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Использование автономерации версий

Сообщение GAMER » 30.10.2008 15:51:54

Использую автономерацию билдов. Подскажите, как номер версии-билда можно интегрировать в программу. Например, чтобы она выводилась в заголовке окна.
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Использование автономерации версий

Сообщение Mr.Smart » 30.10.2008 16:09:27

Только чтением из ресурса exe файла информации о версии.
Код: Выделить всё
function GetFileVersionStr(const AFileName:string): String;
var
buf : array[0..3071] of byte;
bufp : pointer;
fn : string;
valsize,
size : DWORD;
h : DWORD;
valrec : PVSFixedFileInfo;
M,L: DWORD;
begin
  result:='';
  M:=0;
  L:=0;
  fn:=AFileName;
  UniqueString(fn);
  size:=GetFileVersionInfoSize(pchar(fn),@h);
  if size>sizeof(buf) then
    begin
      getmem(bufp,size);
      try
        if GetFileVersionInfo(pchar(fn),h,size,bufp) then
          if VerQueryValue(bufp,'\',valrec,valsize) then
           begin
            M:=valrec^.dwFileVersionMS;
            L:=valrec^.dwFileVersionLS;
           end
      finally
        freemem(bufp);
      end;
    end
  else
    begin
      if GetFileVersionInfo(pchar(fn),h,size,@buf) then
        if VerQueryValue(@buf,'\',valrec,valsize) then
          begin
           M:=valrec^.dwFileVersionMS;
           L:=valrec^.dwFileVersionLS;
          end
    end;
  Result:=Format('%d.%d.%d.%d',[M shr 16,M and $FF,L shr 16,L and $FF])
end;


Добавлено спустя 35 секунд:
Но это только в Windows!
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Использование автономерации версий

Сообщение GAMER » 30.10.2008 16:16:16

С самого ехе-файла вытягивать или с файла *.rc?
Аватара пользователя
GAMER
энтузиаст
 
Сообщения: 627
Зарегистрирован: 06.08.2008 13:41:07
Откуда: Ужгород-Днепр, Украина

Re: Использование автономерации версий

Сообщение Mr.Smart » 30.10.2008 16:19:43

Пишешь код вида
Код: Выделить всё
var
  s: String;
....
  s:=GetFileVersionStr(ParamStr(0));
...

и в s версия файла вида x.x.x.x

Добавлено спустя 32 секунды:
тоесть натравливаешь функцию на exe файл...
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!

Re: Использование автономерации версий

Сообщение yuray » 09.01.2009 17:48:46

Может уже и для gtk2 что-то сделали? rc-файл создается... Но как добраться до FileVersion, чтоб в About форме показать?
yuray
новенький
 
Сообщения: 95
Зарегистрирован: 22.05.2008 14:19:19
Откуда: Ровно, Украина

Re: Использование автономерации версий

Сообщение Mr.Smart » 10.01.2009 02:01:00

Для не Виндос приложений делаю вот так:
создаю файл version.inc содержащим строку вида
Код: Выделить всё
'1.1.0.4'

а в коде где нужно использую вставку
Код: Выделить всё
Caption:={$I version.inc}


p.s. конечно некакой тут автонумерицией не пахнет (версию меняешь в ручную) зато независит от платформы ....
Mr.Smart
долгожитель
 
Сообщения: 1796
Зарегистрирован: 29.03.2008 01:01:11
Откуда: из леса!


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: MailRu[bot] и гости: 22

Рейтинг@Mail.ru