![]() |
Grund für $LIBVERSION Parameter in *.dpk Dateien?
Hallo,
da in der Beschreibung dieses Bereiches "Benutzung und/oder Weiterentwicklung von Komponenten" steht, schreibe ich meine Frage hier rein, obwohl es nichts mit GUI zu tun hat. ;-) Bei der Erstellung von Packages gibt es in der *.dpk Datei die Möglichkeit einen Parameter $LIBVERSION zu setzen.
Delphi-Quellcode:
Was diese Option macht, verstehe ich.
{$LIBVERSION '1.0'}
In der Delphi Hilfe steht: Fügt dem Ausgabedateinamen eine zweite Dateinamenserweiterung nach der Erweiterung .bpl hinzu. Durch die Angabe 2.1.3 für Package1 wird beispielsweise Package1.bpl.2.1.3 generiert. Aber: Wozu braucht man diese Option? Borland/CodeGear/Embarcadero verwenden die Option $LIBSUFFIX um die (Delphi-)Version vor das .bpl zu setzen. (
Delphi-Quellcode:
)
{$LIBSUFFIX '150'}
Kennt jemand die Antwort? Danke MaBuSE |
AW: Grund für $LIBVERSION Parameter in *.dpk Dateien?
Nehmen wir an, wir erstellen ein Runtime-Package MyPackage und das dazugehörige Designtime-Package MyPackageDesign. Das Design-Package required das Runtime-Package.
Erstellt man das Package nun für verschiedene (Delphi-)Versionen, dann müsste man die DPK-Dateien und alles was dazu gehört jedesmal umbenennen (schlecht für die Versionsverwaltung) und bei jedem Umbenennen das requires im Design-Package ändern. Verwendet man nun das LibSuffix (z.B. "150"), wird aus einer MyPackage.dpk eine MyPackage150.bpl und eine MyPackage.dcp. Damit kann das requires so bleiben, die Projektdateien behalten ihren Namen und die einzige Änderung ist der Eintrag für das LibSuffix. Mach das Leben deutlich einfacher. |
AW: Grund für $LIBVERSION Parameter in *.dpk Dateien?
Zitat:
Aber das war ja auch nicht die Frager ;-) Die Frage ist wozu $LIBVERSION ? mfg MaBuSE |
AW: Grund für $LIBVERSION Parameter in *.dpk Dateien?
Zitat:
ich hab mal ein wenig rumprobiert ;-) Die Frage kann ich nun selbst beantworten. Bei der Verwendung der Laufzeit Packages gibt es wie bei den *.dll Dateien (ist ja im Grunde dasselbe) die so genannte dll - Hölle. Beispiel 1: Wir haben 2 Anwendungen, die dasselbe Package verwenden. (A1.exe, A2.exe und P.bpl)So nun zu
Delphi-Quellcode:
:
$LIBVERSION
Beispiel2: Wir haben 2 Anwendungen, die dasselbe Package verwenden. (A1, A2 und P)Schade nur, dass man das
Delphi-Quellcode:
Tag von Hand pflegen muss. Man hätte es auch an die VERSIONINFO knüpfen können.
$LIBVERSION
Nachteil: Wenn nun 20 Änderungen des Packages ausgeliefert wurden würden in unserem Beispiel 22 Dateien im Verzeichnis liegen. Mann muss also genau Buch führen, wann man die alten Versionen nicht mehr benötigt. Komplizierter wird das bei 50 (teilweise voneinander abhänigigen) Packages und z. B. 20 *.exe Dateien. Es macht also Sinn, bei einem Major Release (z.B. aus 1.2.17 wird 2.0.0) alle Package und Anwendungen zu kompilieren und die Alten komplett zu entsorgen. Vorteil: Es gibt keine Probleme mit falschen Packageversionen. Fazit: Eine gute Sache. :-) Also
Delphi-Quellcode:
zum kennzeichnen von Laufzeit und Designtime Packages,
$LIBPREFIX
Delphi-Quellcode:
zum kennzeichnen der Delphi Version (150 -> Delphi XE),
$LIBSUFFIX
Delphi-Quellcode:
zum kennzeichnen der Version des Packages um Versionskonflikten zur Laufzeit aus dem Weg zu gehen.
$LIBVERSION
Danke für's Lesen ;-) mfg MaBuSE |
AW: Grund für $LIBVERSION Parameter in *.dpk Dateien?
[QUOTE=MaBuSE;1076456]
Zitat:
Dadurch werden die diese Dateien erst dann deinstalliert, wenn keine andere Installation diese mehr benötigt. Somit ist es nur wichtig vernünftige Setups auszuliefern, denn diese kümmern sich um das Aufräumen selber. |
AW: Grund für $LIBVERSION Parameter in *.dpk Dateien?
Zitat:
![]() |
AW: Grund für $LIBVERSION Parameter in *.dpk Dateien?
@Sir Rufo: Danke für die Info.
Zitat:
Wir verwenden keine Laufzeitpackages um Problemen aus dem Weg zu gehen. Zitat:
Funktioniert das auch bei *.bpl Dateien? Im Grunde sind das ja auch nur *.dll Dateien, die nur eine gewisse Struktur bei den definierten Prozeduren/Funktionen haben. Mal von den Unterschieden wegen Memorymanager, Parameterübergaben ... abgesehen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:08 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