2011-04-19 17 views
6

FastReports dosyaları oluşturmak için bir DLL kullanan bir uygulama var.DLL dosya sürümü

Rapor veri yapısında değişiklik yapmam gerektiğinde, yalnızca bu DLL'yi değiştirir ve bunu tüm APP kullanıcısına dağıtırım. Başlamadan önce son sürümün hepsinin olduğunu nasıl garanti edebilirim?

Bu bilgiyi DLL dosyasından nasıl üretebilir/ayıklayabilirim.

cevap

12

Bu fonksiyon dizesi olarak DosyaSürümü alacak:

function FileVersionGet(const sgFileName : string) : string; 
var infoSize: DWORD; 
var verBuf: pointer; 
var verSize: UINT; 
var wnd:  UINT; 
var FixedFileInfo : PVSFixedFileInfo; 
begin 
    infoSize := GetFileVersioninfoSize(PChar(sgFileName), wnd); 

    result := ''; 

    if infoSize <> 0 then 
    begin 
    GetMem(verBuf, infoSize); 
    try 
     if GetFileVersionInfo(PChar(sgFileName), wnd, infoSize, verBuf) then 
     begin 
     VerQueryValue(verBuf, '\', Pointer(FixedFileInfo), verSize); 

     result := IntToStr(FixedFileInfo.dwFileVersionMS div $10000) + '.' + 
        IntToStr(FixedFileInfo.dwFileVersionMS and $0FFFF) + '.' + 
        IntToStr(FixedFileInfo.dwFileVersionLS div $10000) + '.' + 
        IntToStr(FixedFileInfo.dwFileVersionLS and $0FFFF); 
     end; 
    finally 
     FreeMem(verBuf); 
    end; 
    end; 
end; 
+0

Sürüm bilgisi paneli .DLL Projesi için devre dışı bırakıldı. Sürüm bilgilerini etkinleştirmek ve ayarlamak için nasıl etkinleştirebilirim? – DRokie

+2

@DRookie: dll'nin proje dosyasına {$ R * .res} ekleyin. – dummzeuch

3

Kullanım SysUtils.GetFileVersion()

dosya sürümü alınıyor peşin dosya sürümü ayar gerektirir.

+0

Sürüm Bilgileri 'Proje/Options' – kludg

+0

sürüm bilgisi panel altında projeye dahil edilmelidir .DLL Projesi için devre dışı bırakmaktır. Sürüm bilgilerini etkinleştirmek ve ayarlamak için nasıl etkinleştirebilirim? – DRokie

0

JCL JclFileVersion var. İki ya da üç çizgi ve sen bitti.

4

Dll sürümünü edinin:

function GetDllVersion: string; //Run in dll project 
var 
    fn: string; 
begin 
    fn := GetModuleName(HInstance); 
    Result := FileVersionGet(fn); // use Matthias's function 
end; 
İlgili konular