![]() |
[Delphi 2007] Packages installieren mit Abhängigkeiten
Hallo,
ich portiere im Moment (immernoch) von Delphi 6 auf Delphi 2007. Habe jetzt auch glaub ich alles hinbekommen, bis auf eine Sache. Ich habe ein Package (A) mit einer Abhängigkeit zu einem zweiten Package (B). Wenn ich nun Package A installiere, installiert er auch brav Package B mit und alles sieht wunderbar aus. Wenn ich dann aber Komponenten aus Package A benutzen will oder Delphi neustarte kommt die Fehlermeldung das er die PackageB.bpl nicht finden kann (im Bezug auf Package A) und deaktiviert Package A. Package B bleibt aber weiterhin installiert und die dort enthaltenen Komponenten können auch benutzt werden. Ich hab in allen Suchpfaden die Pfade zur PackageB.bpl drin, sogar in den Bibiliothekspfaden von Delphi selber. Finde nichts mehr, wo ich die Pfade eintragen kann. Die einzige Lösung, die ich momentan gefunden hab, ist die PackageB.bpl in den allgemeinen BPL Ordner von Delphi zu packen (C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\5.0\Bpl\). Dies ist aber für unsere gesamte Firma eigentlich keine Lösung. Außerdem muss man beim neucompilieren immer daran denken, sie dort wieder rein zu kopieren ... Hat jemand eine Idee? Mache ich etwas falsch? Gruß, Steffen |
Re: [Delphi 2007] Packages installieren mit Abhängigkeiten
Keiner eine Idee? :(
|
Re: [Delphi 2007] Packages installieren mit Abhängigkeiten
Nimm den Ausgabepfad aus den Packageeinstellungen raus, dann wird die bpl beim Erstellen automatisch den den Standard-BPL-Ausgabepfad geschrieben
|
Re: [Delphi 2007] Packages installieren mit Abhängigkeiten
Hallo,
hier ein kurzer Auszug aus der Hilfedatei zum Virtual TreeView: Zitat:
Gruß Hawkeye |
Re: [Delphi 2007] Packages installieren mit Abhängigkeiten
Danke für eure Hilfe.
Mhhh, da hab ich wohl keine andere Wahl, als das auch so zu tun :( Find ich aber eigentlich daneben! Bei uns liegen diese Sachen alle in speziellen Ordnern. |
Re: [Delphi 2007] Packages installieren mit Abhängigkeiten
Zitat:
Unsere Struktur ist: ...\Packagesammlung\lib ...\Packagesammlung\sys In \lib sind alle Dateien, die in den Biblithekssuchpfad gehören. Das sind *.dcu, *.dcp, *.dfm, *.res, *.dcr, ... In \sys sind alle Dateien, die in den Systempfad gehören (PATH=...\sys;...) Das sind *.bpl (und evtl benötigte *.dll, ...) Beim Arbeiten mit dieser Struktur haben wir bisher noch keine Probleme gehabt.
Code:
Obiges Beisp. benötigt also folgenden Pfad:
B:\Delphi10\comp\
+---Advantage | +---lib | \---sys +---CrystalReportsVCL | +---lib | \---sys ... +---DOA | +---lib | \---sys +---DevExpress | +---lib | \---sys +---Envision | +---lib | \---sys ... +---JEDI | \---JCL | +---lib | \---sys ...
Code:
und folgenden Bibliothekspfad:
Path=%path%;B:\Delphi10\comp\Advantage\sys;B:\Delphi10\comp\CrystalReportsVCL\sys;B:\Delphi10\comp\DOA\sys;B:\Delphi10\comp\DevExpress\sys;B:\Delphi10\comp\Envision\sys;B:\Delphi10\comp\JEDI\JCL\sys;
Code:
Alle Komponenten und 3th party tools sowie Experten sind bei uns NICHT lokal installiert, sondern liegen in der Versionsverwaltung. Auf den Rechnern ist nur das blanke Delphi installiert. Es gibt zu jedem Projekt eine Definitionsdatei in der steht welche Komponenten (in welcher Version) das Projekt benötigt. Beim Doppelklick auf diese Konfigurations-Datei wird ein Programm gestartet, das die benötigten Komponenten in der "richtigen" Version in der Versionsverwaltung auswählt, Den Systempfad anpasst, in Delphi die benötigten Package installiert und die Pfade setzt. (Registry) Danach wird automatisch Delphi gestartet und das Programm lässt sich kompilieren.
"HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Library\Search Path"="$(BDS)\lib;$(BDSUSERDIR)\Imports;$(BDS)\Imports;$(BDS)\Lib\Indy10;$(BDSCOMMONDIR)\Dcp;B:\Delphi10\comp\Advantage\lib;B:\Delphi10\comp\CrystalReportsVCL\lib;B:\Delphi10\comp\DOA\lib;B:\Delphi10\comp\DevExpress\lib;B:\Delphi10\comp\Envision\lib;B:\Delphi10\comp\JEDI\JCL\lib"
Damit haben wir erreicht, das jedes Programm (egal welche Komponenten verwendet werden) auf jedem PC kompilierbar sind. Projekt1 benötigt z.B. DOA3 und DevExpress Quantum Grid 3 Doppelklick auf die Konfig und Delphi ist in Sekunden gestartet -> es kann kompiliert werden. Projekt2 benötigt z.B. DOA4, DevExpress Quantum Grid Version 6.25, JCL und ADS Doppelklick auf die Konfig und Delphi ist in Sekunden gestartet -> es kann kompiliert werden. Unser Build-Server der die offiziellen Lieferungen kompiliert kann somit auch auf alles zugreifen. |
Re: [Delphi 2007] Packages installieren mit Abhängigkeiten
Hallo Mabuse,
danke für deine ausführliche Antwort. Euer System gefällt mir, aber ist für uns nicht praktikabel. Unsere Ordnerstruktur sieht allerdings eurer sehr ähnlich. Deine Beschreibung hat bei mir nichts geändert (ich nehme an bei Pfad meintest du den Suchpfad!?!), ich habe allerdings das Thema durch dich nochmal aufgegriffen und nun endlich die Lösung gefunden! Hast du denn überhaupt Abhängigkeiten in deinen Packages (also ein anderes eigene Package im requires des Packages)? Die Lösung ist, dass aus anderen Packages heraus geladene BPL sich wie DLLs und Packages in Anwendungen verhalten. Sprich: Das Package muss in einem Systempfad liegen. Also in einem Pfad der in der Umgebungsvariable "Path" steht. Dort muss also der Pfad nur hinzugefügt werden und Delphi findet ihn. Finde ich sehr nervig, aber ist wohl nicht änderbar. Interessant ist, dass es in der Registry unter HKEY_CURRENT_USER\Software\Borland\BDS\5.0\Library einen Wert "Package Search Path" gibt, der aber in der IDE nicht nach außen geführt wurde und leider wohl auch nichts bringt (hatte ihn gesehen und erstmal gejubelt - leider zu früh ...). Gruß, Steffen |
Re: [Delphi 2007] Packages installieren mit Abhängigkeiten
Wir haben meist das Probelem das er die Dcu und bpl datein nicht neu compiliert
was aber sein sollte. Diese BPL und dcu dateien liegen auch schon mal im Windows Ordner!!!! Follegende Vorgehensweise um Abhängige Packages neu zu compilieren: 1. Packege 1 aus deaktiviern, Delphi neustart 2. Package 1 aus delhie entfernen, Delphi neustart 3. siehe 1. mit Package 2 4. siehe 2. mit Package 2 5. auf dem gesammten system nach Compilaten (dcu, bpl )der beiden Packages suchen und diese löschen(auch im windows ordner) 6. Packages in der richtigen Reihenfolge wieder erzeugen (Projekt erzeugen) und einbinden. leider müssen wir das jedes mal machen wenn wir die Packages verändern...... deswegen scheint die Lösung mit dem einen Pfad verlockender. |
Re: [Delphi 2007] Packages installieren mit Abhängigkeiten
Mit Pfad meinte ich dem Systempfad. *.bpl Dateien sind eigentlich nur aufgemotzte *.dll Dateien. Und sie müssen wie *.dll Dateien eben im Pfad (ich meine Systempfad) stehen.
Daher mein Codebeisp. PATH=%PATH%; ... (das ist ja der SystemPfad) Ja wir haben viele Abhängigkeiten. z.B. wenn eigene Komponenten auf 3th party Kompontnenen basieren. Die Trennung in \lib und \sys hat sich als sehr praktikabel erwiesen. sys: Da beim Suchen in dem SystemPfad alle Verzeichnisse durchsucht werden, ist es von Vorteil diese sehr klein zu halten (Machmal steht nur eine *.bpl drin, machmal 20 *.bpl Dateien). lib: Die *.dcp , *.dcu sowie Resourcen Dateien (*.dfm, *.res, *.dcr, ...) gehören in den Bibliotheksuchpfad. Da nur der Compliler bzw die IDE diese Dateien benötigen. Der "Bibliotheksuchpfad" im Optionendialog ist in der Registry der "Search Path". Und der "Suchpfad" im Optionendialog ist in der Registry der "Browsing Path". Das darf man nicht verwechseln :-) |
Re: [Delphi 2007] Packages installieren mit Abhängigkeiten
Zitat:
Und damit ist es auch erstmals möglich ganze Projektgruppen inkl. der definierten Abhänigkeiten komplett zu kompilieren. Also Deine Packages alle in eine Projektgruppe Abhängigkeiten definieren Speichern und dann von der Eingabeaufforderung mit
Code:
kompilieren.
msbuld Projektgruppendatei
msbuild ruft dann für die einzelnen Projekte (in Deinem Fall Packages) den dcc32 auf. Wenn alle Package kompiliert wurden kannst Du Delphi wieder starten und fertig. (Das habe ich schon öfter gemacht, wenn ich in einem Baispackage was ändere, können leicht 20 bis 100 Packages davon betroffen sein. :mrgreen: Das ist meiner Meinung nach mit eine der besten Neuerungen in D2007 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 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-2025 by Thomas Breitkreuz