我有一个应用程序使用DLL来生成fastReports文件。DLL文件版本
当我需要对报告数据结构进行更改时,我只更改此DLL并将其分发给APP的所有用户。我如何保证在开始之前都有最新版本?
如何从DLL文件生成/提取此信息。
我有一个应用程序使用DLL来生成fastReports文件。DLL文件版本
当我需要对报告数据结构进行更改时,我只更改此DLL并将其分发给APP的所有用户。我如何保证在开始之前都有最新版本?
如何从DLL文件生成/提取此信息。
此功能将得到的文件版本为字符串:
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;
获取文件版本需要提前设置文件版本。
JCL有JclFileVersion。两三行,你就完成了。
获取DLL版本:
function GetDllVersion: string; //Run in dll project
var
fn: string;
begin
fn := GetModuleName(HInstance);
Result := FileVersionGet(fn); // use Matthias's function
end;
版本信息面板对.DLL项目禁用。我如何启用它来激活和设置版本信息? – DRokie 2011-04-21 11:11:26
@ DRookie:将{$ R * .res}添加到dll的项目文件中。 – dummzeuch 2011-04-22 06:38:25