Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   DLL-Version herausfinden (https://www.delphipraxis.net/213740-dll-version-herausfinden.html)

skoschke 18. Sep 2023 15:19

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:
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;
Die obige Funktion habe ich hier vor langer Zeit einmal hier gefunden:-)
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

Uwe Raabe 18. Sep 2023 15:29

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 Project Magician geschrieben: Keep Your Project Files Clean With Project Magician - speziell der Abschnitt Clear Settings in Child Configurations

skoschke 18. Sep 2023 15:41

AW: DLL-Version herausfinden
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Uwe,

so sieht die Einstellung bei mir aus (siehe Anhang)

Ciao
Stefan

himitsu 18. Sep 2023 15:46

AW: DLL-Version herausfinden
 
PS: Delphi-Referenz durchsuchenSysUtils.GetFileVersion

Es macht zwar in etwa das Gleiche, wie deine Funktion,
also gilt weiterhin das Gesagt von Uwe.

Stolle58 18. Sep 2023 16:02

AW: DLL-Version herausfinden
 
Was steht in
Code:
getModuleName
.

Uwe Raabe 18. Sep 2023 16:30

AW: DLL-Version herausfinden
 
Was ist das eigentlich für eine getModuleName Funktion ohne Parameter?

Dalai 18. Sep 2023 17:50

AW: DLL-Version herausfinden
 
Zitat:

Zitat von Uwe Raabe (Beitrag 1527073)
Was ist das eigentlich für eine getModuleName Funktion ohne Parameter?

Wahrscheinlich eine Vereinfachung dieser: https://docwiki.embarcadero.com/Libr....GetModuleName, in dem schon hInstance o.ä. übergeben wird.

Grüße
Dalai

Uwe Raabe 18. Sep 2023 19:09

AW: DLL-Version herausfinden
 
Zitat:

Zitat von skoschke (Beitrag 1527062)
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!

Ich vermute ja immer noch ein Problem in den Projekteinstellungen. Kannst du das an einem frischen DLL-Projekt reproduzieren?

Du könntest auch mal die .dproj Datei hier anhängen.

Rolf Frei 18. Sep 2023 21:59

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.

jaenicke 18. Sep 2023 22:41

AW: DLL-Version herausfinden
 
Zitat:

Zitat von Rolf Frei (Beitrag 1527086)
So musst du jedes mal alle Builds aktualisieren, wenn du die Versionsnummer ändern willst.

Es sei denn du löschst (manuell oder mit dem oben genannten Tool) alle Versionsinformationen aus der .dproj außer der Basiskonfiguration. Dann reicht es, die Basis anzupassen.

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.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:24 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz