Dateiversion einer .exe auslesen
Moderator: Moderatoren
Dateiversion einer .exe auslesen
Hallo Leute!
Ich soll aus einer exe die Version auslesen. Diese steht ja normalerweise unter Eigenschaften->Version. Gibt es da eine Möglichkeit?
Besten dank im Vorraus!
WEY
Ich soll aus einer exe die Version auslesen. Diese steht ja normalerweise unter Eigenschaften->Version. Gibt es da eine Möglichkeit?
Besten dank im Vorraus!
WEY
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Dateiversion einer .exe auslesen
Hi,
handelt es sich um dein (Xbase++) Programm, das auf seine Versions-Infos zugreifen will
oder ist es eine x-beliebige EXE ?
handelt es sich um dein (Xbase++) Programm, das auf seine Versions-Infos zugreifen will
oder ist es eine x-beliebige EXE ?
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Dateiversion einer .exe auslesen
Code: Alles auswählen
FUNCTION GetFileVersion(cFile)
LOCAL cFileName := GetShortFileName(cFile)
LOCAL nStartAt := 0
LOCAL nInfoLen := DllCall("Version.dll", DLL_STDCALL, "GetFileVersionInfoSizeA", cFileName, @nStartAt)
LOCAL cVersion := Space(nInfoLen)
IF nInfoLen > 0 .AND. DllCall("Version.dll", DLL_STDCALL, "GetFileVersionInfoA", cFileName, 0, nInfoLen, @cVersion) <> 0
cVersion := Upper(cVersion)
IF At("FILEVERSION", cVersion) == 0
cVersion := StrTran(cVersion, chr(0) + chr(0), ">[@]<")
cVersion := StrTran(cVersion, chr(0), "")
cVersion := Upper(StrTran(cVersion, ">[@]<", chr(0)))
IF (nStartAt := At("FILEVERSION", cVersion)) > 0
nStartAt += 13
ENDIF
ELSEIF (nStartAt := At("FILEVERSION", cVersion)) > 0
nStartAt += 12
ENDIF
IF nStartAt > 0
nInfoLen := At(Chr(0), cVersion, nStartAt)
cVersion := AllTrim(SubStr(cVersion, nStartAt, nInfoLen - nStartAt))
ELSE
cVersion := ""
ENDIF
ENDIF
// Manchmal sind komische Zeichen vorneweg. Die müssen weg, sonst gibt das eine falsche Version.
DO WHILE .T.
IF isDigit(SubStr(cVersion, 1, 1)) == .T. .OR. cVersion == ""
Exit
ELSE
cVersion := SubStr(cVersion, 2)
ENDIF
ENDDO
RETURN cVersion
*****************************************************************************************************************************
***
*****************************************************************************************************************************
FUNCTION GetShortFileName(cLongName)
LOCAL cShortName := Space(255)
LOCAL nNameLen := 1
IF empty(cLongName)
RETURN ('')
ELSE
IF Set(_SET_CHARSET) == CHARSET_OEM
cLongName := ConvToAnsiCp(cLongName)
ENDIF
nNameLen := DllCall("Kernel32.DLL", DLL_STDCALL, "GetShortPathNameA", cLongName, @cShortName, Len(cShortName))
ENDIF
RETURN Left(cShortName, nNameLen)
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Re: Dateiversion einer .exe auslesen
Hammer! Vielen Dank, dass hat mir jetzt schon einen rechten Schritt weitergeholfen! =D> Ich hab gerade noch erfahren, dass diese Prüfung nicht nur von "lokalen" exe's ausgelsen werden soll, sondern auch von einer Webseite.
Er soll so zusagen die Version meiner lokalen exe, mit der Version der Exe von diesem Link: http://federerag.ch/support/NetviewerK.exe vergleichen und dann die Datei herunterladen falls die lokale unaktueller ist als die auf dem Webserver.
Gibt es dazu eine DLL oder ähnlich mit sowas geht? Ich hoffe ich nerve nicht
Jedenfalls schon mal vielen Dank für die GIGANTISCHE Hilfe meiner ersten Hürde!!!
WEY
Er soll so zusagen die Version meiner lokalen exe, mit der Version der Exe von diesem Link: http://federerag.ch/support/NetviewerK.exe vergleichen und dann die Datei herunterladen falls die lokale unaktueller ist als die auf dem Webserver.
Gibt es dazu eine DLL oder ähnlich mit sowas geht? Ich hoffe ich nerve nicht
Jedenfalls schon mal vielen Dank für die GIGANTISCHE Hilfe meiner ersten Hürde!!!
WEY
- Tom
- Der Entwickler von "Deep Thought"
- Beiträge: 9367
- Registriert: Do, 22. Sep 2005 23:11
- Wohnort: Berlin
- Hat sich bedankt: 102 Mal
- Danksagung erhalten: 361 Mal
- Kontaktdaten:
Re: Dateiversion einer .exe auslesen
Hallo, Wey.
Das dürfte relativ unmöglich sein, es sei denn, man lädt die Datei sowieso (temporär) herunter und prüft sie vor Ort, oder zusätzlich zu dieser Internet-Datei wird (in einer anderen Datei?) eine Versionsinformation angeboten. Die lokale API ist bei derlei wirkungslos.
Das dürfte relativ unmöglich sein, es sei denn, man lädt die Datei sowieso (temporär) herunter und prüft sie vor Ort, oder zusätzlich zu dieser Internet-Datei wird (in einer anderen Datei?) eine Versionsinformation angeboten. Die lokale API ist bei derlei wirkungslos.
Herzlich,
Tom
Tom
- brandelh
- Foren-Moderator
- Beiträge: 15697
- Registriert: Mo, 23. Jan 2006 20:54
- Wohnort: Germersheim
- Hat sich bedankt: 66 Mal
- Danksagung erhalten: 33 Mal
- Kontaktdaten:
Re: Dateiversion einer .exe auslesen
Hi,
wie Tom geschrieben hat, wenn man selbst der Herr über die Website ist Infos in einer Textdatei hinterlegen.
Textdatei laden und auswerten.
Ansonsten Datei downloaden, prüfen und wenn neuer übernehmen.
Zum Laden von WEB Seiten (bzw. direkt Dateien daraus) kann man LoadFromUrl() (Asinet oder Phil's Sammlung) verwenden.
wie Tom geschrieben hat, wenn man selbst der Herr über die Website ist Infos in einer Textdatei hinterlegen.
Textdatei laden und auswerten.
Ansonsten Datei downloaden, prüfen und wenn neuer übernehmen.
Zum Laden von WEB Seiten (bzw. direkt Dateien daraus) kann man LoadFromUrl() (Asinet oder Phil's Sammlung) verwenden.
Gruß
Hubert
Hubert
- Jan
- Marvin
- Beiträge: 14658
- Registriert: Fr, 23. Sep 2005 18:23
- Wohnort: 49328 Melle
- Hat sich bedankt: 21 Mal
- Danksagung erhalten: 88 Mal
- Kontaktdaten:
Re: Dateiversion einer .exe auslesen
Ich selber mache das mit einer zusätzlichen Textdatei. In der sind die Versionen der herunterladbaren Dateien vermerkt. Und erstmal wird nur die Textdatei runtergeladen, und dann Zeile für Zeile die jeweilige Datei ausgelesen. Ist die Datei auf dem Server neuer wird genau diese heruntergeladen. Was ich mit Phils LoadFromUrl mache.
Jan
Jan
Mitglied der XUG Osnabrück
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.
Mitglied der XUG Berlin/Brandenburg
Mitglied des Deutschsprachige Xbase-Entwickler e. V.