Abfrage installierte DLL-Versionen

Von der Installation bis zur Auslieferung der Applikation

Moderator: Moderatoren

Antworten
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

Abfrage installierte DLL-Versionen

Beitrag von ingo »

Moin!
Ich meine mich zu erinnern, dass es eine einfache Möglichkeit gibt, die Versionsinformationen aus den installierten (XBase-, List&Label-) DLLs auszulesen - und finde nix dazu. Ich möchte die installierten Versionsnummern mit den aktuell verwendeten Versionen vergleichen um gf. einen Hinweis auf veraltete DLLs auszugeben.
Kann mir jemand weiter helfen?
(Nebenfrage: wo finde ich eigentlich die "Wissensdatenbank" des Forums?)
Schönen Gruß, Ingo
Benutzeravatar
Manfred
Foren-Administrator
Foren-Administrator
Beiträge: 21186
Registriert: Di, 29. Nov 2005 16:58
Wohnort: Kreis Wesel
Hat sich bedankt: 210 Mal
Danksagung erhalten: 67 Mal

Re: Abfrage installierte DLL-Versionen

Beitrag von Manfred »

Hi Ingo,

hier ist alles drin, was wir unter Wissenbasis verstehen

http://www.xbaseforum.de/viewforum.php?f=16
Gruß Manfred
Mitglied der XUG Osnabrück
Schatzmeister des Deutschsprachige Xbase-Entwickler e.V.
großer Fan des Xbaseentwicklerwiki https://wiki.xbaseentwickler.de/index.p ... Hauptseite
Doof kann man sein, man muß sich nur zu helfen wissen!!
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Abfrage installierte DLL-Versionen

Beitrag von ingo »

Moin Manfred,

danke, ich dachte es wäre noch ein sep. Bereich.
...und herzlichen Glückwunsch zum Geburtstag!
Schönen Gruß, Ingo
Benutzeravatar
brandelh
Foren-Moderator
Foren-Moderator
Beiträge: 15695
Registriert: Mo, 23. Jan 2006 20:54
Wohnort: Germersheim
Hat sich bedankt: 65 Mal
Danksagung erhalten: 33 Mal
Kontaktdaten:

Re: Abfrage installierte DLL-Versionen

Beitrag von brandelh »

ingo hat geschrieben:die Versionsinformationen aus den installierten (XBase-, List&Label-) DLLs auszulesen - und finde nix dazu.
Zu Xbase++ und seinen Komponenten gibt es den Befehl

XPPLOAD version

In der Hilfe steht dazu einiges, und damit kann man auch jede DLL / EXE als Dateiname angeben und die Version gemeldet bekommen.
Das Ergebnis in eine Textdatei und einlesen ... ;-)
Sicherlich gibt es in z.B. List&Label aber auch eine Funktion, welche die Version zurückgibt, ähnlich wie unter Xbase++.
Gruß
Hubert
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Abfrage installierte DLL-Versionen

Beitrag von ingo »

Hi Hubert,
das war's wohl. Man kann mit XPPLOAD auch Non-Xbase-Versionen abfragen, bekommt aber bei List&Label teilweise ein bisschen merkwürdige Ergebnisse. Und List&Label selbst liefert scheinbar nur eine Versionsnummer, nicht die, der einzelnen DLLs... aber damit werde ich weiterkommen.

Vielen Dank!
Schönen Gruß, Ingo
Benutzeravatar
AUGE_OHR
Marvin
Marvin
Beiträge: 12906
Registriert: Do, 16. Mär 2006 7:55
Wohnort: Hamburg
Hat sich bedankt: 19 Mal
Danksagung erhalten: 45 Mal

Re: Abfrage installierte DLL-Versionen

Beitrag von AUGE_OHR »

ingo hat geschrieben:das war's wohl. Man kann mit XPPLOAD auch Non-Xbase-Versionen abfragen, bekommt aber bei List&Label teilweise ein bisschen merkwürdige Ergebnisse. Und List&Label selbst liefert scheinbar nur eine Versionsnummer, nicht die, der einzelnen DLLs... aber damit werde ich weiterkommen.
dann versuche mal dies

Code: Alles auswählen

PROCEDURE DLLLIST()
LOCAL I, J, DllName, hDll, aVersion, fVersion
LOCAL aDLLFiles := DIRECTORY( "*.DLL" )
LOCAL nCount    := LEN( aDLLFiles )
LOCAL n, nSum, cTest, cVers := ""
LOCAL DllList   := {}

   FOR n := 1 TO nCount
      AADD( DllList, aDLLFiles[ n, F_NAME ] )
   NEXT

   FOR I := 1 TO LEN( DllList )
      DllName := DllList[ I ]
      IF DllInfo( DllName, DLL_INFO_LOADED )
         hDll := DllInfo( DllName, DLL_INFO_HANDLE )
         fVersion := LoadResource( 1, hDll, RES_VERSIONFIXED )
         aVersion := LoadResource( 1, hDll, RES_VERSION )
         IF LEN( fVersion ) > 0
            * ? "Product Version: "+ltrim(str(fVersion[RES_PRODVER_MS ]))+ltrim(str(fVersion[RES_PRODVER_LS ]))
            * ? "   File Version: "+ltrim(str(fVersion[RES_FILEVER_MS ]))+ltrim(str(fVersion[RES_FILEVER_LS ]))
            * ? "      File Time: "+ltrim(str(fVersion[RES_FILETIME_MS]))+ltrim(str(fVersion[RES_FILETIME_LS]))
         ELSE
         ENDIF

         IF LEN( aVersion ) > 0
            FOR J := 1 TO LEN( aVersion )
               cTest := aVersion[ J ] [ RES_VERSION_KEY ]
               DO CASE
                  CASE cTest = "CompanyName"
                  CASE cTest = "InternalName"
                  CASE cTest = "LegalCopyright"
                  CASE cTest = "OriginalFilename"
                  CASE cTest = "ProductName"
                  CASE cTest = "ProductVersion"
                  CASE cTest = "Comment"
                  CASE cTest = "FileVersion"
                       cVers := aVersion[J][RES_VERSION_VALUE]
                  OTHERWISE
                     // FileDescription
                     *  ? aVersion[J][RES_VERSION_KEY]+": "+aVersion[J][RES_VERSION_VALUE]
                     ? SUBSTR(DllName+SPACE(15),1,15) + ": " +;
                     LTRIM( LTRIM( cVers )+" "+ LTRIM( aVersion[J][RES_VERSION_VALUE] ) )
               ENDCASE
            NEXT
         ELSE
         ENDIF
      ENDIF
   NEXT

RETURN
gruss by OHR
Jimmy
Benutzeravatar
ingo
UDF-Programmierer
UDF-Programmierer
Beiträge: 62
Registriert: Fr, 19. Okt 2007 10:20
Wohnort: Lüneburg
Danksagung erhalten: 1 Mal
Kontaktdaten:

Re: Abfrage installierte DLL-Versionen

Beitrag von ingo »

Hi Jimmy,
vielen Dank - das klingt spannend und ist weniger aufwändig, als eine Textdatei zu interpretieren.
Man sollte vielleicht doch ab und zu mal wieder die ganze XBase Doku durchlesen... im Urlaub habe ich nur leider Notebookverbot.
Schönen Gruß, Ingo
Antworten