Discussion:
Programm-Version ermitteln
(zu alt für eine Antwort)
Michael Landenberger
2005-12-09 10:03:24 UTC
Permalink
Man kann ja schön im Delphi-Projekt diverse Informationen
einstellen, die sich dann z.B. über die Eigenschaften
der EXE-Datei anzeigen lassen. (Version etc.)
Kann ich eigentlich auch aus dem Programmcode auf diese
Infos zugreifen? Kann das Programm zur Laufzeit ermitteln,
welche Programmversion hier angezeigt wird, um dann mit dieser
Info weiterzuverfahren?
Selbstverfreilich geht das.
Und wenn (wen wunderts): wie geht das?
Schau dir mal die Hilfe zur Windows-API-Funktion GetFileVersionInfo () an.

Gruß

Michael
Jens Winter
2005-12-09 11:39:15 UTC
Permalink
Man kann ja schön im Delphi-Projekt diverse Informationen
einstellen, die sich dann z.B. über die Eigenschaften
der EXE-Datei anzeigen lassen. (Version etc.)
Kann ich eigentlich auch aus dem Programmcode auf diese
Infos zugreifen? Kann das Programm zur Laufzeit ermitteln,
welche Programmversion hier angezeigt wird, um dann mit dieser
Info weiterzuverfahren?
function GetFileVersion: string;
var
VersionInfoSize, Len: DWORD;
Buffer: PChar;
Value: PChar;
begin
Result := '';
VersionInfoSize := GetFileVersionInfoSize(PChar(Application.Exename),
VersionInfoSize);
if VersionInfoSize > 0 then
begin
Buffer := AllocMem(VersionInfoSize);
try
GetFileVersionInfo(PChar(Application.Exename), 0,
VersionInfoSize, Buffer);

if VerQueryValue(Buffer,
PChar('StringFileInfo\040704E4\FileVersion'), Pointer(Value), Len) then
Result := Value
else
raise Exception.Create('Die Versionsnummer konnte nicht gelesen
werden.');
finally
FreeMem(Buffer, VersionInfoSize);
end;
end
else
raise Exception.Create('Keine Versionsinformationen gefunden.');
end;

Ciao
Jens
Michael Adler
2005-12-09 11:46:02 UTC
Permalink
Hallo Jens Winter
PChar('StringFileInfo\040704E4\FileVersion'), ...
Dies geht demnach nur bei deutschen Versionsinfos.
(Aber ich denke das dürfte genügen ;)
Michael Mauler
2005-12-09 12:09:29 UTC
Permalink
Man kann ja schön im Delphi-Projekt diverse Informationen
einstellen, die sich dann z.B. über die Eigenschaften
der EXE-Datei anzeigen lassen. (Version etc.)
Kann ich eigentlich auch aus dem Programmcode auf diese
Infos zugreifen? Kann das Programm zur Laufzeit ermitteln,
welche Programmversion hier angezeigt wird, um dann mit dieser
Info weiterzuverfahren?
Und wenn (wen wunderts): wie geht das?
Benno
"Meine" Version:

function GetVersion(Datei: string): string;
var aFileName: array [0..MAX_PATH] of Char;
pdwHandle: DWORD;
nInfoSize: DWORD;
pFileInfo: Pointer;
pFixFInfo: PVSFixedFileInfo;
nFixFInfo: DWORD;
pVarFInfo: PChar;
nVarFInfo: DWORD;
nVarTrans: DWORD;
aVarFPath: array [0..MAX_PATH] of Char;
begin
//Gibt Versionsnummer als String zurück
StrPCopy(aFileName,Datei);
pdwHandle := 0;
nInfoSize := GetFileVersionInfoSize(aFileName, pdwHandle);
result:='0';
if nInfoSize <> 0 then
pFileInfo := GetMemory(nInfoSize)
else
pFileInfo := nil;
if Assigned(pFileInfo) then
begin
try
if GetFileVersionInfo(aFileName, pdwHandle, nInfoSize, pFileInfo)
then
begin
pFixFInfo := nil;
nFixFInfo := 0;
if VerQueryValue(pFileInfo, '\', Pointer(pFixFInfo), nFixFInfo)
then
begin
result :=
Format('%d.%d.%d.%d',[HiWord(pFixFInfo^.dwFileVersionMS),

LoWord(pFixFInfo^.dwFileVersionMS),HiWord(pFixFInfo^.dwFileVersionLS),
LoWord(pFixFInfo^.dwFileVersionLS)]);
end;
end;
finally
FreeMemory(pFileInfo);
end;
end;
end;

mfg Michael
--
email: herrmann_der_vernichter-no-s*p*a****@hotmail.com

Remove "-no-s*p*a*m" in email-adress

"C combines the power of assembly language with the ease of use of assembly
language"
Simon Reinhardt
2005-12-10 09:48:17 UTC
Permalink
Man kann ja schön im Delphi-Projekt diverse Informationen
einstellen, die sich dann z.B. über die Eigenschaften
der EXE-Datei anzeigen lassen. (Version etc.)
Kann ich eigentlich auch aus dem Programmcode auf diese
Infos zugreifen? Kann das Programm zur Laufzeit ermitteln,
welche Programmversion hier angezeigt wird, um dann mit dieser
Info weiterzuverfahren?
Und wenn (wen wunderts): wie geht das?
Hilfe zu diesem Thema (und zu vielen anderen) findest Du in meiner Delphi
Fundgrube (Abschnitt "Anwendungen").


Simon
--
Don't panic

Homepage: http://www.picsoft.de
Delphi Fundgrube: http://www.delphi-fundgrube.de
Rolf Eike Beer
2005-12-28 16:50:37 UTC
Permalink
Post by Simon Reinhardt
Man kann ja schön im Delphi-Projekt diverse Informationen
einstellen, die sich dann z.B. über die Eigenschaften
der EXE-Datei anzeigen lassen. (Version etc.)
Kann ich eigentlich auch aus dem Programmcode auf diese
Infos zugreifen? Kann das Programm zur Laufzeit ermitteln,
welche Programmversion hier angezeigt wird, um dann mit dieser
Info weiterzuverfahren?
Und wenn (wen wunderts): wie geht das?
Hilfe zu diesem Thema (und zu vielen anderen) findest Du in meiner
Delphi Fundgrube (Abschnitt "Anwendungen").
"Dateien, Ordner, Laufwerke" dürfte eher passen. "Anwendungen" gibt es
nicht und in "Applikationen" findet sich nichts derartiges.

Eike

Lesen Sie weiter auf narkive:
Loading...