Moin,
Unter Projekt/Optionen/Versionsinformationen steht
Produktversion: 1.0.0.0
Dateiversion: 1.0.0.0
In der Exe steht bei
Produktversion 1.0.0.0
Dateiversion: 1.0.5145.32946.
Wenn die Versionsinformationen mittel
Delphi-Quellcode:
function GetFileVersion(
const FileName:
String):
String;
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Funktion ermittelt die Versionsnummer einer Exe-Datei
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
// Quelle: http://www.delphi-library.de/topic_die+Version+einer+ExeDatei+ermitteln_15850,0.html
var
VersionInfoSize, VersionInfoValueSize, Zero: DWord;
VersionInfo, VersionInfoValue: Pointer;
begin
{ Ist Datei nicht vorhanden, dann Hinweis und raus aus Funktion ...}
if not FileExists(FileName)
then
begin
Result := '
-1';
{ alternativ auch 'File not found' oder sonstwas }
Exit;
end;
{ sonnst weiter. }
Result := '
';
VersionInfoSize := GetFileVersionInfoSize(PChar(FileName), Zero);
if VersionInfoSize = 0
then Exit;
{ Bei nicht genug Speicher wird EOutOfMemory-Exception ausgelöst }
GetMem(VersionInfo, VersionInfoSize);
try
if GetFileVersionInfo(PChar(FileName), 0, VersionInfoSize, VersionInfo)
and
VerQueryValue(VersionInfo, '
\'
{ root block }, VersionInfoValue,
VersionInfoValueSize)
and (0 <> LongInt(VersionInfoValueSize))
then
begin
with TVSFixedFileInfo(VersionInfoValue^)
do
begin
Result := IntToStr(HiWord(dwFileVersionMS));
Result := Result + '
.' + IntToStr(LoWord(dwFileVersionMS));
Result := Result + '
.' + IntToStr(HiWord(dwFileVersionLS));
Result := Result + '
.' + IntToStr(LoWord(dwFileVersionLS));
end;
{ with }
end;
{ then }
finally
FreeMem(VersionInfo);
end;
{ try }
end;
{ GetFileVersion }
ermittel, erhalte ich nur die 1.0.5145.32946.
Wie komme ich ich an den "richtigen" Wert (1.0.0.0)?
Wenn ich die obige Funktion debugge, taucht die 1.0.0.0 auch nicht darin auf.
Und woher kommt der "falsche" Wert (1.0.5145.32946) in der Exe.
Ich möchte die aktuelle Programmversion im Programm unter Info anzeigen.
Gruß Heiko