【发布时间】:2011-04-19 20:35:34
【问题描述】:
我有一个使用 DLL 生成 fastReports 文件的应用程序。
当我需要更改报告数据结构时,我只更改此 DLL 并将其分发给 APP 的所有用户。我如何保证所有人在开始之前都拥有最新版本?
如何从 DLL 文件中生成/提取此信息。
【问题讨论】:
标签: delphi dll versioning
我有一个使用 DLL 生成 fastReports 文件的应用程序。
当我需要更改报告数据结构时,我只更改此 DLL 并将其分发给 APP 的所有用户。我如何保证所有人在开始之前都拥有最新版本?
如何从 DLL 文件中生成/提取此信息。
【问题讨论】:
标签: delphi dll versioning
此函数将获取文件版本作为字符串:
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;
【讨论】:
获取DLL版本:
function GetDllVersion: string; //Run in dll project
var
fn: string;
begin
fn := GetModuleName(HInstance);
Result := FileVersionGet(fn); // use Matthias's function
end;
【讨论】:
获取文件版本需要提前设置文件版本。
【讨论】:
Project/Options下的项目中
JCL 有 JclFileVersion。两三行就完成了。
【讨论】: