![]() |
DLL-Version herausfinden
Hallo,
ich erstelle eine DLL mit Delphi 10.4. In den Projektoptionen ist die Version eingetragen (z.B. 1.2.7.0) Nun möchte ich zur Kontrolle, ob die richtige DLL im Anwendungsprogramm verwendet wird, deren Version auslesen...
Delphi-Quellcode:
Die obige Funktion habe ich hier vor langer Zeit einmal hier gefunden:-)
function GetCurrentVersion(): string;
var VerInfoSize: DWord; VerInfo: Pointer; VerValueSize: DWord; VerValue: PVSFixedFileInfo; Dummy: DWord; begin VerInfoSize := GetFileVersionInfoSize(PChar(getModuleName), Dummy); GetMem(VerInfo, VerInfoSize); GetFileVersionInfo(PChar(getModuleName), 0, VerInfoSize, VerInfo); VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize); with VerValue^ do begin Result := IntTostr(dwFileVersionMS shr 16); Result := Result + '.' + IntTostr(dwFileVersionMS and $FFFF); Result := Result + '.' + IntTostr(dwFileVersionLS shr 16); Result := Result + '.' + IntTostr(dwFileVersionLS and $FFFF); end; FreeMem(VerInfo, VerInfoSize); end; Leider bekomme ich als Ergebnis "1.0.0.0" und wenn ich mit die Eigenschaften der DLL im Explorer ansehe, ist da auch nur 1.0.0.0 als Dateiversion und Produktversion angegeben! Warum steht das 1.2.7.0 nicht in den Eigenschaften der DLL? Ciao Stefan |
AW: DLL-Version herausfinden
Prüf mal, ob die gewünschte Version auch in der gerade verwendeten Build-Konfiguration eingetragen ist. Es gibt zwar eine Vererbung der Werte, aber die funktioniert nur solange man keine eigenen Werte in den Child-Konfigurationen hat.
Unter anderem aus diesem Grund habe ich den ![]() ![]() |
AW: DLL-Version herausfinden
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Uwe,
so sieht die Einstellung bei mir aus (siehe Anhang) Ciao Stefan |
AW: DLL-Version herausfinden
PS:
![]() Es macht zwar in etwa das Gleiche, wie deine Funktion, also gilt weiterhin das Gesagt von Uwe. |
AW: DLL-Version herausfinden
Was steht in
Code:
.
getModuleName
|
AW: DLL-Version herausfinden
Was ist das eigentlich für eine getModuleName Funktion ohne Parameter?
|
AW: DLL-Version herausfinden
Zitat:
![]() Grüße Dalai |
AW: DLL-Version herausfinden
Zitat:
Du könntest auch mal die .dproj Datei hier anhängen. |
AW: DLL-Version herausfinden
Dir ist schon bewusst, dass du die Versionsinfo bei allen Build-Konfiugurationen eintragen musst. Dein Screenshot von oben wird nur ein 32 Bit Release Build mit dieser Versionsnummer ergänzen. Wenn du eine Debug Build compilierst, wird da noch der Defaultwert von 1.0.0.0 drin stehen. Kontrolliere daher mal alle deine Buildkonfigs (Combobox oben im Dialog), dass du da bei allen deine gewünschte Version drin stehen hast. Das ist leider absolut idiotisch gemacht! So musst du jedes mal alle Builds aktualisieren, wenn du die Versionsnummer ändern willst.
|
AW: DLL-Version herausfinden
Zitat:
Meistens klappt das auch, indem man die Versionsinformation einmal in allen Buildkonfigurationen genau angleicht, aber das klappt leider nicht immer. Problematisch ist auch manchmal, wenn man die Versionsinformation nicht auf Deutschland einstellt, weil manche Tools diese Ressource dann ignorieren. |
AW: DLL-Version herausfinden
Nein, nicht bei Allen .... am Einfachten garnicht bei irgendwo, außer in der Basis.
Außer man will z.B. Release und Debug oder sonstwas (z.B. SpecialBuild) config-abhängig unterschiedlich haben. Bei uns hab ich die Version-Ressource in den Projektoptionen deaktiviert, der FinalBuilder erstellt eine .RC und daraus eine .RES, mit dieser Info-Resource, und das wird dann in die Anwendung gelinkt. |
AW: DLL-Version herausfinden
Zitat:
|
AW: DLL-Version herausfinden
Liste der Anhänge anzeigen (Anzahl: 1)
Vielen Dank für all Eure Vorschläge!
Nach allerlei probieren ist mir noch eine Einstellung in den Versionseinstellungen aufgefallen, siehe Bild! Damit bekomme ich nun auch die gewünschten Infos mit meiner Funktion :-) Ciao Stefan |
AW: DLL-Version herausfinden
Zitat:
|
AW: DLL-Version herausfinden
Von Michael gab es dafür eine Consolenanwendung, welche die Version setzte,
aber ich weiß nicht ob es mit aktuellen Delphis noch geht ... Luckie war damals bis TurboDelphi (Delphi 2006) mitgegangen. ![]() da nicht entdeckt .... vielleicht hier mal den zugehörigen Thread suchen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:55 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz