我有一个使用DLL生成fastReports文件的应用程序。
当我需要更改报表数据结构时,我只更改此DLL并将其分发给APP的所有用户。我怎么能保证在开始之前都有最后一个版本?
如何从DLL文件生成/提取此信息。
答案 0 :(得分:12)
此函数将把fileversion作为字符串:
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;
答案 1 :(得分:5)
获取Dll版本:
function GetDllVersion: string; //Run in dll project
var
fn: string;
begin
fn := GetModuleName(HInstance);
Result := FileVersionGet(fn); // use Matthias's function
end;
答案 2 :(得分:3)
获取文件版本需要提前设置文件版本 。
答案 3 :(得分:0)
JCL有JclFileVersion。两三行你就完成了。