Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Версия билда программы


Автор: dvamaster 22.6.2009, 11:49
Доброго времени суток!

Есть программа, у нее есть версия, где билд автоматически инкрементируется. Нужно сделать автообновление!
Ссылка на скачивание, номера версий... храняться в БД, в общем-с все релизовано.

Вопрос:
Есть ли предопределенные константы, переменные и т.д., которые автоматически заполняются при изменении билда?
Так как программа в стадии тестирования и доработки (юзверя много чего хотят от нее  smile ), надоело руками править константы! smile 

Автор: Keeper89 22.6.2009, 12:22
Цитата(dvamaster @  22.6.2009,  12:49 Найти цитируемый пост)

Вопрос:
Есть ли предопределенные константы, переменные и т.д., которые автоматически заполняются при изменении билда?
Так как программа в стадии тестирования и доработки (юзверя много чего хотят от нее  smile ), надоело руками править константы! smile  

О каких константах идет речь?

Автор: dvamaster 22.6.2009, 12:35
Цитата(Keeper89 @  22.6.2009,  15:22 Найти цитируемый пост)
О каких константах идет речь?


Например:

Код

Caption := Caption +  CurrentBuild;


CurrentBuild подставляется компилятором, или в каком-то модуле высчитывается.

Добавлено через 4 минуты и 42 секунды
В общем плюнул так-то отыскивать эти константы...

Код

function GetBuildVersion: String;
var
  b: array [0..1023] of Char;
  l: Integer;
  dw: DWORD;
  d: Pointer;
  dt: Pointer;
  dtl: DWORD;
begin
  Result := '';
  GetModuleFileName(HInstance, @b, 1023);
  l := GetFileVersionInfoSize(@b, dw);
  if l <> 0 then
    begin
      d := GetMemory(l);
      GetFileVersionInfo(@b, 0, l, d);
      VerQueryValue(d, '\', dt, dtl);
      Result := IntToStr(PVSFixedFileInfo(dt)^.dwFileVersionMS shr 16 and $FFFF);
      Result := Result + '.' + IntToStr(PVSFixedFileInfo(dt)^.dwFileVersionMS and $FFFF);
      Result := Result + '.' + IntToStr(PVSFixedFileInfo(dt)^.dwFileVersionLS shr 16 and $FFFF);
      Result := Result + '.' + IntToStr(PVSFixedFileInfo(dt)^.dwFileVersionLS and $FFFF);
      FreeMemory(d)
    end;
end;


вот рабочая функция выдает версию файла (не продукта) в формате [Major version].[MinorVersion].[Release].[Build]

так функция выведет версию продукта
Код

function GetBuildVersion: String;
var
  b: array [0..1023] of Char;
  l: Integer;
  dw: DWORD;
  d: Pointer;
  dt: Pointer;
  dtl: DWORD;
begin
  Result := '';
  GetModuleFileName(HInstance, @b, 1023);
  l := GetFileVersionInfoSize(@b, dw);
  if l <> 0 then
    begin
      d := GetMemory(l);
      GetFileVersionInfo(@b, 0, l, d);
      VerQueryValue(d, '\', dt, dtl);
      Result := IntToStr(PVSFixedFileInfo(dt)^.dwProductVersionMS shr 16 and $FFFF);
      Result := Result + '.' + IntToStr(PVSFixedFileInfo(dt)^.dwProductVersionMS and $FFFF);
      Result := Result + '.' + IntToStr(PVSFixedFileInfo(dt)^.dwProductVersionLS shr 16 and $FFFF);
      Result := Result + '.' + IntToStr(PVSFixedFileInfo(dt)^.dwProductVersionLS and $FFFF);
      FreeMemory(d)
    end;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)