2011-04-19 11 views
6

J'ai une application qui utilise une DLL pour générer des fichiers fastReports.Version du fichier DLL

Lorsque j'ai besoin d'apporter des modifications à la structure de données des rapports, je modifie uniquement cette DLL et la distribue à tous les utilisateurs de l'application. Comment puis-je garantir que tous ont la dernière version avant de commencer?

Comment puis-je générer/extraire cette information à partir du fichier DLL.

Répondre

12

Cette fonction aura la fileversion sous forme de chaîne:

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

Le panneau d'informations sur la version est désactivé pour le projet .DLL. Comment puis-je l'activer pour activer et définir les informations de version? – DRokie

+2

@DRookie: Ajoutez {$ R * .res} au fichier de projet de la DLL. – dummzeuch

3

Utilisez SysUtils.GetFileVersion()

Obtenir la version du fichier nécessite la mise en version du fichier à l'avance.

+0

Informations sur la version devrait être inclus dans le projet sous 'Projet/Options' – kludg

+0

Le panneau d'information de version est désactivée pour le projet .DLL. Comment puis-je l'activer pour activer et définir les informations de version? – DRokie

0

JCL ont JclFileVersion. Deux ou trois lignes et vous avez terminé.

4

Obtenir la version dll:

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