![]() |
Indy-Installation funktioniert nicht
Ich habe das neueste Indy-Paket heruntergeladen von:
![]() Da ich Delphi 11 verwende, habe ich \Lib\Fullc_Alexandria.bat ausgeführt. Die Fehlermeldung ist aber unverständlich: C:\Program Files (x86)\Embarcadero\Studio\22.0\Bin\CodeGear.Delphi. Targets(412,5): warning MSB6002: The command-line fo r the "DCC" task is too long. Command-lines longer than 32000 characters are likely to fail. Try reducing the length of the command-line by breaking down the call to "DCC" into multiple calls with fewer parameters per call. [C:\COMP\Indy- master\C28\IndySystem280.dproj] C:\Program Files (x86)\Embarcadero\Studio\22.0\Bin\CodeGear.Delphi. Targets(412,5): error MSB6003: The specified task ex ecutable "dcc" could not be run. The filename or extension is too long [C:\COMP\Indy-master\C28\IndySystem280.dproj] Done Building Project "C:\COMP\Indy-master\C28\IndySystem280.dproj" (Rebuild target(s)) -- FAILED. Wie kann aber die Befehlszeile für die Installation von Indy länger als 32.000 Zeichen sein? Wenn ich aber dann aber \C28\IndySystem280.dproj in Delphi 11 lade und manuell zu compilieren versuche, kommt diese Fehlermeldung: [Fatal Error] Cannot compile package 'IndySystem280' which is currently required by Delphi 11. Was ist damit gemeint? |
AW: Indy-Installation funktioniert nicht
Die Fehlermeldung heißt normalerweise, dass du zu viele Pfade in deinem Bibliothekspfad hast.
Wird die zu lange Kommandozeile gar nicht erst angezeigt? |
AW: Indy-Installation funktioniert nicht
Wieso übergibt das Script in der Befehlszeile überhaupt ALLE Library-Paths an den Delphi Befehlszeilen-Compiler DCC32? Das ist doch völlig unlogisch und unnötig - es soll doch nur das Indy-Package compiliert werden!
Auch die Fehlermeldung "[Fatal Error] Cannot compile package 'IndySystem280' which is currently required by Delphi 11." ist unlogisch da in sich widersprüchlich. |
AW: Indy-Installation funktioniert nicht
Zitat:
Um herauszufinden, welche Units benötigt werden, wird ja bereits der Compiler benötigt und ebenso der Zugriff auf die entsprechenden Units. Deshalb gibt es rein logisch keinerlei Möglichkeit, vorher herauszufinden, welche Units benötigt werden, um dann die Pfade zu filtern und dann nur die dem Compiler zu füttern, die entsprechende Units enthalten. Davon abgesehen macht das auch keinen Sinn, denn schon dafür wird ja ebenfalls die komplette Liste der Pfade benötigt. Delphi ist schlicht fehlerhaft eingestellt, wenn so viele Pfade im Bibliothekspfad stehen. Außerdem dauert das Kompilieren dann natürlich auch viel länger. Zitat:
In den meisten Fällen braucht man auch gar keine neuere Version von Indy als die, die mit Delphi ohnehin schon mitgeliefert wird. Das sind nur wenige Spezialfälle. |
AW: Indy-Installation funktioniert nicht
Es gibt eine recht aktuelle Anleitung dafür, wie man Indy aktualisiert:
Updating Indy ![]() Und wenn man es einfacher haben möchte: * die alte Indy-Version nicht deinstallieren, sondern: * neues Indy separat installieren - einfach per Subversion svn checkout - und dann: * nur für das Projekt die Suchpfade hinzufügen für Lib\Code, Lib\Protocols, Lib\System * Komponenten wenn möglich nur zur Laufzeit instanziieren So kann man * jederzeit z.B. mit Subversion "svn update" Indy aktualisieren * auf beliebige frühere Versionen switchen * mehrere Indy-Versionen parallel verwenden p.s. alternativ kann man natürlich auch dieses neue "git" verwwenden ;-) |
AW: Indy-Installation funktioniert nicht
Abgesehen von dem, was jaenicke schon schrieb: Wenn Du neue Indy-Packages compilieren willst, solltest Du vorher die Pfade zu der mitgelieferten Indy-Version aus der IDE-Configuration entfernen, sonst werden ggf. alte Units mit neuen gemischt und man sucht sich bei Fehlern den Wolf.
|
AW: Indy-Installation funktioniert nicht
Das scheint ein allgemeines Problem bei MS Build zu sein:
Microsoft (R) Build Engine version 4.8.4084.0 [Microsoft .NET Framework, version 4.0.30319.42000] Auch TMS verwendet MS BUILD zum Installieren seiner Komponenten - dort tritt dann der gleiche Fehler auf (Befehlszeile zu lang). Die TMS-Komponenten müssen dann umständlich manuell in der IDE installiert werden! Wie kann man verhindern, dass MS Build die gesamten Library Paths (!) an dcc32 übergibt? |
AW: Indy-Installation funktioniert nicht
Gibt es keine Möglichkeit, komfortabel ganze Gruppen von Packages zu deaktivieren? (Idealerweise auch zur Laufzeit der IDE?)
Es gibt zwar einen "Expert-Manager", mit dem man außerhalb der IDE (d.h. wenn diese nicht läuft) einzelne Packages deaktivieren/aktivieren kann: ![]() Aber wirklich sinnvoll wäre es nur, wenn man ganze Gruppen von Packages bequem suchen/filtern und auswählen könnte. |
AW: Indy-Installation funktioniert nicht
Zitat:
|
AW: Indy-Installation funktioniert nicht
Zitat:
Das hat aber nicht damit zu tun, ob MSBuild den Compiler aufruft oder Delphi selbst. Zitat:
Das hat mit MSBuild nichts (!) zu tun. Das ist nur ein schönes Tool, damit man die dcc32.exe nicht selbst aufrufen muss. In Delphi sieht das dann in den Meldungen z.B. so aus: Zitat:
Das Problem ist wie schon geschrieben, dass du zu viele Pfade eingetragen hast oder diese zu lang sind. Dafür kann weder Delphi noch MSBuild etwas. Du müsstest diese einfach mal aufräumen... |
AW: Indy-Installation funktioniert nicht
Möglicherweise ist nicht die Gesamtlänge das Problem - denn die erste Meldung ist keine Fehlermeldung sondern eine Warnung (mit Code MSB6002), die auf einen zu langen command-line String hinweist. Danach, in der Fehlermeldung mit Code MSB6003, ist nur die Rede von einem zu langen Dateinamen / einer zu langen Extension.
Wenn man im Internet zu error MSB6003 recherchiert, gelangt man schnell zu ![]() Hier wird auch beschrieben, wie man das Limit entfernen kann. Der Fehler könnte auftreten, wenn ein einzelner der Pfade länger als 260 Zeichen ist. (z.B. ein Pfad, der eine Variable enthält). Mittels Texteditor, in dem alle ; im Library Path durch CR/LF ersetzt werden, läßt sich das eventuell bestätigen. |
AW: Indy-Installation funktioniert nicht
Zitat:
Bei mir funktioniert das Compilieren der Indy-Komponenten problemlos, ebenso wie das der JCL und JVCL (die ich ebenfalls per commandline mit msbuild compiliere). Vielleicht sind bei Dir die Pfade zu den Verzeichnissen auch extrem lang, weil Du Sourcen immer nach c:\users\<ganz langer username>\<sonstige Verzeichnisse> installierst? Ich installiere Delphi immer nach c:\Delphi\<version> und irgendwelche Bibliotheken immer nach d:\source, so dass die Pfade relativ kurz sind, auch wenn viele Verzeichnisse drin stehen. Zitat:
Leider verewigen sich dort auch diverse Bibliotheken, wobei das wohl auch die Empfehlung seitens Embarcadero ist. Das heißt aber dann auch, dass die immer verwendet werden, egal ob man die Bibliothek in einem Projekt verwendet oder nicht. |
AW: Indy-Installation funktioniert nicht
Zitat:
|
AW: Indy-Installation funktioniert nicht
Zitat:
Außerdem scheinst du noch immer nicht zur Kenntnis genommen zu haben, dass MSBUILD der tatsächliche Urheber für den Fehler ist. |
AW: Indy-Installation funktioniert nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anhang 55907 Auch beim Aufruf aus der IDE heraus muss der Compiler die Pfadangaben bekommen. Wie sollte das denn sonst auch gehen? Stell dir mal vor, dass du jemandem sagst, dass er alle Personen mit dem Nachnamen Müller aus dem Telefonbuch heraussuchen soll, aber das Telefonbuch zum Nachschlagen bekommt er nicht. Das kann nicht klappen... Wie soll der Compiler die Units denn finden, wenn er nicht gesagt bekommt, wo diese liegen können? Und wenn in der Konfiguration ein Fehler ist (zu langer einzelner Pfad oder zu viele Pfade insgesamt), dann funktioniert es eben nicht. |
AW: Indy-Installation funktioniert nicht
[QUOTE=jaenicke;1520039]
Zitat:
|
AW: Indy-Installation funktioniert nicht
OK, wir sind bei Beleidigungen und Großchrift angekommen. Ich bin dann raus.
|
AW: Indy-Installation funktioniert nicht
Zitat:
Jedenfalls habe ich durchaus zur Kenntnis genommen, dass du irgendwo eine Magie vermutest, die vorher herausfindet, welche Pfade gebraucht werden. Aber weder existiert diese noch wäre diese logisch möglich, ohne dafür Compilerfunktionen zu nutzen (z.B. im Rahmen des LSP-Hintergrundcompilers). Denn ohne Compilerfunktionen ist es nun einmal unmöglich zu wissen, welche Units benötigt werden, und dementsprechend welche Pfade nötige Units enthalten. |
AW: Indy-Installation funktioniert nicht
[QUOTE=jaenicke;1520044]
Zitat:
Die Logik ist eigentlich ganz einfach und sollte eigentlich von jedem Grundschüler verstanden werden:
Delphi-Quellcode:
oder vielleicht noch besser:
if CompilationByMSBUILD and (LibraryPaths.Count > X) then
Result := Error else if CompilationByDCC32 then Result := OK;
Delphi-Quellcode:
if LibraryPaths.Count > X then
begin if CompilationByMSBUILD then Result := Error else if CompilationByDCC32 then Result := OK; end; |
AW: Indy-Installation funktioniert nicht
Der Unterschied ist, dass MSBuild die Validität prüft und ggf. Fehler meldet, während der Aufruf aus der IDE ohne diese Prüfungen gemacht wird. Wenn du nun bemängelst, dass MSBuild eine fehlerhafte Konfiguration nicht einfach so übergeht (und dich ggf. später in Fehler laufen lässt, mit denen du nichts anfangen kannst), kannst du das natürlich tun. Das ändert aber nichts daran, dass der Fehler nicht bei MSBuild liegt.
Zudem hilft es dir auch nicht weiter. Deshalb verstehe ich nicht, weshalb du dich darüber aufregst, statt einfach deine Konfiguration zu korrigieren... In früheren Versionen von Delphi führte ein zu langer Biblitohekspfad übrigens dazu, dass die Kommandozeile für die dcc32.exe irgendwann abgeschnitten wurde, was zu teilweise recht seltsamen Fehlermeldungen führte. Ich hoffe, dass das mittlerweile abgefangen wird, aber ausprobiert habe ich das nicht. Zu lange einzelne Pfade hingegen wurden ggf. einfach ignoriert, so dass man sich nur gewundert hat, warum die Units nicht gefunden werden (was eben bei MSBuild geprüft und dir gemeldet wird). |
AW: Indy-Installation funktioniert nicht
Zitat:
In der Religion wird "falscher Glauben" auch als Aberglauben bezeichnet. In der Logik ist Glauben aber immer Aberglauben. |
AW: Indy-Installation funktioniert nicht
Ich sehe keinen Grund, an einer so präzisen Fehlermeldung eines Standardwerkzeugs wie MSBuild zu zweifeln, bis man die Angabe überprüft hat.
Wenn du das nicht prüfen möchtest, ist das deine Sache. Dafür kann aber weder Delphi noch MSBuild oder das Indy-Projekt etwas. Dann kann dir leider auch niemand dabei helfen. // EDIT: Zitat:
Ja, Logik ist oft einfach, aber man sollte nicht Ursache und Wirkung durcheinander bringen. |
AW: Indy-Installation funktioniert nicht
Zitat:
Ich frage mich oft, was der tatsächliche Grund für die fast als religiös zu bezeichnende Verzücktheit ist, mit der viele Leute an Microsoft-Produkten hängen. |
AW: Indy-Installation funktioniert nicht
Zitat:
|
AW: Indy-Installation funktioniert nicht
Zitat:
Verstehe ich das richtig? Die Fehlermeldungen gefallen dir nicht und du glaubst ihnen nicht, weil es ein Microsoft-Tool ist? Und dann fängst du mit religiöser Verzücktheit an? Sorry, aber worüber reden wir hier eigentlich? |
AW: Indy-Installation funktioniert nicht
Zitat:
Deine vielen vergeblichen Versuche, die Anzahl der Library-Pfade als primäre Ursache festzumachen, muss ich anhand der Fakten als psychologischen Widerstand werten, der von dem bekannten Umstand abgeleitet wird, dass Menschen mit Vorurteilen oft große Schwierigkeiten haben, ihre Vorurteile und ihren Aberglauben aufzugeben. Solche Menschen festigen auch gemeinsam ihre Vorurteile, indem sie sich gegenseitig in ihrem Irrtum bestärken. Das sind alles wohlbekannte Symptome, die in vielen auch klinisch nachgewiesenen Situationen auftreten können. Wenn dich das Thema interessiert, kann ich dir gerne Links zu wissenschaftlichen Studien darüber zukommen lassen. |
AW: Indy-Installation funktioniert nicht
|
AW: Indy-Installation funktioniert nicht
Zitat:
Das Tool selbst hat damit allerdings nichts zu tun, denn es tut nur das, was Embarcadero ihm sagt. Es sammelt die Kommandozeile nach den Vorgaben Embarcaderos zusammen und ruft diese dann auf. Nur dass das eben mit einem so langen Bibliothekspfad nicht geht. Ich habe es einmal ausprobiert: - Wenn nur ein Pfad mehr als die erlaubten 260 Zeichen hat, kompiliert die IDE selbst schon nicht mehr. Das ist hier also nicht das Problem. - Ich habe dann den Bibliothekspfad aufgeblasen, indem ich immer wieder das gleiche Verzeichnis hinzugefügt habe. Daraufhin habe ich die oben genannte Fehlermeldung bekommen, was ja der absichtlich durch so viele Pfadangaben kaputten Konfiguration entspricht. Insofern passt da alles. Dass die IDE selbst damit keine Probleme hat, ist auch klar, denn diese zeigt zwar die Kommandozeile an, ruft aber nicht die dcc32.exe auf (die es in Trials und der Community Edition ja nicht gibt), sondern verwendet direkt die Compiler-DLL und schiebt die Kommandozeile einfach direkt hinüber. Dass die Kommandozeile viel zu lang ist, sieht man aber dennoch in der IDE. Und damit würde es auch ohne MSBuild nicht extern funktionieren, denn wenn man den Aufruf an die dcc32.exe aus der Registry selbst zusammenbauen würde, hätte man das gleiche Problem wie MSBuild. Das habe ich mit meinem entsprechenden Tool "Delphi Batch Compiler" auch ausprobiert. Der Aufruf des Compilers funktioniert dort mit derart vielen Bibliothekspfaden auch nicht. Ich bekomme die gleiche Fehlermeldung wie MSBuild, wenn ich versuche die dcc32.exe zu starten: "Der Dateiname oder die Erweiterung ist zu lang" Wie gesagt: Das Problem ist nicht MSBuild, sondern das Problem ist, dass du von extern versuchst zu kompilieren. Wenn du nur aus der IDE heraus kompilieren möchtest, kannst du alles lassen wie es ist. Willst du auch per Kommandozeile kompilieren, egal ob umständlich mit der dcc32.exe direkt oder mit MSBuild, dann klappt das mit einem so langen Bibliothekspfad nicht. (Es sei denn du schreibst die Pfade für jedes Projekt entsprechend deiner Umgebung selbst in die Kommandozeile. Aber der Aufwand steht in keinem Verhältnis zu einer Korrektur deines Bibliothekspfads.) |
AW: Indy-Installation funktioniert nicht
Zitat:
"C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\DCC32.EXE" "C:\DELPHI\Mein Test\Test.dpr" Du erhältst eine wunderschöne Test.exe - und das trotz "zu vieler Library-Paths". Soeben getestet. "Korrektur deines Bibliothekspfads." Du hältst hartnäckig an deiner falschen Grundannahme fest, mein Bibliothekspfad müsse "korrigiert" werden. Auch das ist beweisbar falsch - außer du beweist mir das Gegenteil. |
AW: Indy-Installation funktioniert nicht
Damit bestätigst du genau, was ich geschrieben habe.
Wenn du natürlich keine Units aus dem Bibliothekspfad verwendest, musst du diese auch nicht angeben. Nichts anderes habe ich geschrieben. Zitat:
Das kann aber ein Tool, das automatisch kompiliert, nicht herausfinden. Und deshalb klappt es eben nur, wenn du den Compiler manuell aufrufst, aber nicht mit einem Tool, das dies automatisch tut und eben alle Pfade einbeziehen muss. Es ist ja alles gesagt. Du kennst die Lösung und spätere Leser des Threads auch. Ob du sie umsetzt oder nicht, ist deine Sache. |
AW: Indy-Installation funktioniert nicht
Zitat:
|
AW: Indy-Installation funktioniert nicht
Zitat:
Wenn die IDE oder MSBuild den Kompiler aufrufen, werden aber noch weitere Verzeichnisse übergeben, möglich wären da u. a.:
Code:
Ebenso werden auf der Kommandozeile sämtliche in der IDE konfigurierten Kompileroptionen übergeben.
OutputDir
UnitOutputDir PackageDLLOutputDir PackageDCPOutputDir SearchPath Packages Gib doch bitte mal auf der Kommandozeile nur DCC32.exe an und schaue Dir die dort angegebenen Optionen an. Die werden alle von der IDE bzw. MSBuild an den Kompiler auf der Kommandozeile übergeben und wenn das alles "zuviel" wird, kommt der von Dir oben genannte Fehler. Zitat:
Da weder IDE noch MSBuild wissen, welche der Optionen bzw. Pfade der Kompiler konkret benötigt, sie beide nicht wissen, wo ggfls. die benötigten Units zu suchen sind ..., müssen zwangsläufig alle konfigurierten Pfade und Optionen übergeben werden. Wenn Deine Test.dpr keine Units aus den Suchpfaden benötigt, kannst Du ja der Einfachheit halber die Optionen zur Test.dpr in der IDE entsprechend konfigurieren, und schon wird auch per IDE bzw. MSBuild das Kompilieren gelingen.
Code:
Letztlich entspricht Dein Aufruf "nur"
Syntax: dcc32 [optionen] dateiname [optionen]
Code:
und damit kann der Fehler, der durch zuviele Informationen in den Optionen hervorgerufen wird, nicht auftreten, da sie ja nicht angegeben wurden.
Syntax: dcc32 dateiname
|
AW: Indy-Installation funktioniert nicht
Zitat:
Zitat:
Das Problem entsteht nur, wenn man MSBUILD verwendet, weil bei diesem Verfahren alle Bibliothekspfade übergeben werden. Ich verstehe dich aber: Du hast dich an MSBUILD festgebissen und kannst nicht eingestehen, dass man bei der Verwendung von dcc32.exe und der Übergabe der benötigten Units kein Problem hat. Ist psychologisch verständlich. |
AW: Indy-Installation funktioniert nicht
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Im Anhang liegt ein Demoprojekt. Dieses kompiliert nur, wenn man den ebenfalls beiliegenden Ordner lib in den Bibliothekspfad packt, sprich genau das nutzt, sofür dieser benötigt wird. Im folgenden Screenshot siehst du, dass der Aufruf, wie du ihn als Beispiel genannt hast, fehlschlägt. Denn die Unit in dem Ordner lib kann der Compiler natürlich nicht finden. Danach verwende ich msbuild und in dem daraus erfolgenden Aufruf sieht man auch, dass der betreffende Bibliothekspfad dem Compiler übergeben wird. Mit MSBuild lässt sich das Projekt problemlos erstellen, eben weil es den Bibliothekspfad übergibt. Anhang 55909 Wie Delphi.Narium und ich schon geschrieben haben: Bei dir funktioniert es auch ohne den Bibliothekspfad, weil du den schlicht in deinem Test nicht nutzt. Sobald du aber ein Projekt hast, das diesen benötigt, klappt das nicht mehr. Davon ganz abgesehen hat Delphi.Narium auch zu Recht die anderen Optionen angesprochen. Solche Geschichten wie verschiedene Buildkonfigurationen werden natürlich völlig ignoriert, wenn du nur die dcc32.exe ohne die entsprechenden Angaben aufrufst. |
AW: Indy-Installation funktioniert nicht
Zitat:
Das Hauptproblem bei den TMS Komponenten ist, dass TMS sehr grosszügig mit der Länge des Pfades und der Namenslänge der Packages umgeht. Diesbezüglich gibt es mehrere Einträge, wie z.B. ![]() ![]() Seitdem ich den Pfad massiv eingekürzt habe, z.B. C:\T\FNC\UI, habe ich diesbezüglich keine Probleme mehr. |
AW: Indy-Installation funktioniert nicht
Zitat:
Übrigens: Wie verkürzt du den Installationspfad bei bereits vorhandenen Installationen? Und übrigens: Beim zweiten der von dir zitierten Postings geht es um Pfade in den Environment-Variablen. Der Poster hat natürlich recht: Auch dort kann man Platz einsparen. |
AW: Indy-Installation funktioniert nicht
Zitat:
Kann es aber sein, dass du diesen Satz in meinem Posting übersehen hast: "Wenn man bei der Compilierung "von außen", also bei der Verwendung von dcc32.exe, die benötigten Units in der Befehlszeile mit angibt, dann entsteht kein Problem." |
AW: Indy-Installation funktioniert nicht
Zitat:
Deshalb hab' ich mit angewöhnt alle Units, die ich in einem Projekt benötige, in das Projekt aufzunehmen. Das macht die DPR zwar nicht gerade übersichtlicher, aber der Suchpfad hält sich in Grenzen, der Kompiler muss nicht jedesmal den ganzen Suchpfad "abklappern", um jede einzelne Unit zu finden, was den "netten" Nebeneffekt hat, dass das Kompilieren deutlich schneller werden kann, da in der DPR für alle dort aufgeführten Units bereits steht, wo sie konkret zu finden sind. Zitat:
Zeig' uns doch bitte mal den Kommandozeilenaufruf von DCC32.exe für das Projekt, bei dem der o. g. Fehler auftrat,
Code:
enthält jedenfalls keine Unitangaben in der Kommandozeile, sondern nur den Namen des zu kompilierenden Projektes.
"C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\DCC32.EXE" "C:\DELPHI\Mein Test\Test.dpr"
|
AW: Indy-Installation funktioniert nicht
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:
Anhang 55913 Man könnte dann z.B. Folgendes machen: Das UI-Design und die Funktionalität der gewünschten App mit Standard-Komponenten von einer AI erstellen lassen und dann per Befehlszeile die Exe compilieren: Voilà - ein fertiges Programm in 30 Sekunden. |
AW: Indy-Installation funktioniert nicht
Das von Dir eingangs genannte Problem tritt aber doch eben nicht mit Standardkomponenten auf, sondern bei der Installation der Indykomponenten.
Packe doch bitte mal auf Dein Projekt noch eine Komponenten von den Indys. Funktioniert das Kompilieren per DCC32 dann immernoch? Oder alternativ beim Hinzufügen einer Komponente von ImageEN? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:02 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