2011-04-19 15 views
6

Tengo una aplicación que utiliza una DLL para generar archivos fastReports.Archivo DLL versión

Cuando necesito hacer cambios en la estructura de datos de informes, solo cambio esta DLL y la distribuyo a todos los usuarios de la APLICACIÓN. ¿Cómo puedo garantizar que todos tengan la última versión antes de que comiencen?

Cómo puedo generar/extraer esta información del archivo DLL.

Respuesta

12

Esta función obtendrá el fileversion como cadena:

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

El panel de información de versión está deshabilitado para el proyecto .DLL. ¿Cómo puedo habilitarlo para activar y configurar la información de la versión? – DRokie

+2

@DRookie: Agregue {$ R * .res} al archivo de proyecto del dll. – dummzeuch

3

Uso SysUtils.GetFileVersion()

Obtener la versión del archivo requiere el establecimiento de versión de archivo con antelación.

+0

Información de la versión debería incluirse en el proyecto bajo '/ Options' – kludg

+0

La versión del panel de información del proyecto es inhabilitar para el Proyecto de DLL. ¿Cómo puedo habilitarlo para activar y configurar la información de la versión? – DRokie

0

JCL tienen JclFileVersion. Dos o tres líneas y listo.

4

Obtenga la versión DLL:

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