Uygulama Versiyonu

Başlatan ByTEK, 28 Ocak 2016, 14:56:26

ByTEK

Delphide yazdığım uygulamalarda otomatik olarak her derlediğimde versiyonun artmasını istiyorum. Her defasında manual yapıyorum. otomatikleştirme yolu var mıdır ? ayarlarını yaptım options menüsünden ama artmıyor.

boreas

Ben bu yöntem ile okuyabiliyordum. Ama antivirüs programları UAC kontrolü vs. yüzünden artmaz oldu belki sende çalışır.

function Sto_GetFmtFileVersion(const FileName: String = '';
  const Fmt: String = '%d.%d.%d.%d'): String;
var
  sFileName: String;
  iBufferSize: DWORD;
  iDummy: DWORD;
  pBuffer: Pointer;
  pFileInfo: Pointer;
  iVer: array [1 .. 4] of Word;
begin
  // set default value
  Result := '';
  // get filename of exe/dll if no filename is specified
  sFileName := FileName;
  if (sFileName = '') then
  begin
    // prepare buffer for path and terminating #0
    SetLength(sFileName, MAX_PATH + 1);
    SetLength(sFileName, GetModuleFileName(hInstance, PChar(sFileName),
      MAX_PATH + 1));
  end;
  // get size of version info (0 if no version info exists)
  iBufferSize := GetFileVersionInfoSize(PChar(sFileName), iDummy);
  if (iBufferSize > 0) then
  begin
    GetMem(pBuffer, iBufferSize);
    try
      // get fixed file info (language independent)
      GetFileVersionInfo(PChar(sFileName), 0, iBufferSize, pBuffer);
      VerQueryValue(pBuffer, '\', pFileInfo, iDummy);
      // read version blocks
      iVer[1] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
      iVer[2] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionMS);
      iVer[3] := HiWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
      iVer[4] := LoWord(PVSFixedFileInfo(pFileInfo)^.dwFileVersionLS);
    finally
      FreeMem(pBuffer);
    end;
    // format result string
    Result := Format(Fmt, [iVer[1], iVer[2], iVer[3], iVer[4]]);
  end;
end;

ByTEK

Geliştirdiğim uygulamanın versiyonu her derlediğimde artsın dedim. yada siz doğru birşey yazdınız ben anlayamadım :D

t2


ByTEK

bunu yapmama rağmen artmaması normal mi ?

t2

#5
boş bir proje yapıp onun üzerinde deneyelim. belki sizin delphi bozuktur

mesaj birleştirme:: 28 Ocak 2016, 19:13:40

Boş proje üzerinde denedim. gerçekten çalışmadı. fakat eskiden çalışyordu diye hatırlıyorum.  Galiba o sırada XP kullanıyordum.

Belki Windows, 64 bit olduğundan dosya sistemi ntfs olduğundan dolayı windows önbellek sorunu gibi bir sorun nedeniyle güncellenmiyor olabilir.

Şurada bahsedilmiş  belki çözümü vardır:
http://indrayn.com/auto-increment-version-information-pre-build-tool-delphi-xe2-verinfo/