![]() |
Installationsformen von Delphi/Optimierung per Batch-Datei
Zitat:
Man hat somit in unter 2 Minuten eine vollständige Delphi 2009 Installation. Bevor wir diese Batchdateien hatten, war man ein bis zwei Tage beschäftigt die Komponenten in der richtigen Reihenfolge zu installieren und ich war dann immer derjenige der das kaputtkonfigurierte Delphi wieder zum laufen bringen musste. Die Zeit spare ich mir. Für neuer Delphi Versionen bräuchte man sicherlich um einiges länger, da die Gigabytes erstmal übers Netzwerk auf die Platte entpackt werden müssten. Aber den Installer würde es mit Sicherheit noch bei weitem schlagen. |
AW: 25 Jahre Delphi
Zitat:
Wenn man sich anschaut, was ein installiertes Delphi eigentlich ist: Ein Teil im Programme-x86-Ordner, ein Teil im User-Ordner und ein Stückchen Registry. Kann man eigentlich gut per Batch installieren. Insofern würde ich mir wünschen, Emba würde in den nächsten 25 Jahren wieder mehr Augenmerk auf den Installer und dessen Qualität legen. |
AW: 25 Jahre Delphi
Zitat:
Aber das Installationsskript für alle Komponenten kann man wirklich nur jedem wärmstens empfehlen, ja. Das ist ja nicht besonders schwierig, nur etwas Aufwand, aber dafür läuft dann wirklich auf jedem Rechner alles gleich und ohne manuelles Zutun. Wobei ich vermute, dass du das Skript schöner gelöst hast als ich (ich schreibe einfach einiges vorkonfiguriert via Templates in die Registry). ;-) Nur die JEDIs müssen bei uns vorher manuell mit dem Installer installiert werden. Wobei... da sollte sich doch ein "unattended" Schalter relativ einfach einbauen lassen... wir klicken ja eh nur durch ohne etwas zu ändern. Das habe ich mir gleich mal notiert, das schaue ich mal an, wenn ich die Zeit finde. |
AW: 25 Jahre Delphi
Zitat:
Zitat:
|
AW: 25 Jahre Delphi
Zitat:
So setze ich auch die Pfade, aber natürlich nur die Werte, die auch wichtig sind (Bibliothekspfad, ...). Danach kann ich dann die Packages mit den gemeinsamen Units und Komponenten einfach mit msbuild erstellen. Installiert werden die Packages auch einfach per Registry. Es gibt in den JEDI-Quelltexten auch direkte Möglichkeiten der Package-Installation, aber den Aufwand wollte ich nicht betreiben, auch wenn es schöner gewesen wäre... |
AW: 25 Jahre Delphi
Zitat:
Natürlich musste man bei allen Komponenten die Packages einmalig entsprechend auswendig konfigurieren (z.B. gleiches BPL/DCP/DCU Ausgabeverzeichnis, $STRINGCHECKS OFF, ...). Das ist aber jetzt nur dann mit Aufwand verbunden, wenn mal wieder ein Komponenten-Update bevorsteht. Da wir aber Delphi 2009 nutzen, kommt das bei kommerziellen Komponenten selten bis gar nicht mehr vor. Und OpenSource Komponenten/Projekte sind meist einfacher einzubinden, da kein Installer erstmal alles "zerschießt". Zusammengestrichen sieht die Batchdatei so aus (Kommentare, Echo, Error-Handling entfernt). Ist also nur ein einfacher MSBUILD Ausruf mit ein paar selbst geschrieben Tools, die die Registry und Environment.proj Datei aktualisieren.
Code:
msbuild /nologo /t:build /p:Config=Debug /p:ComponentGenPackage=true Components2009.groupproj
bin\ComponentInstaller Components2009.groupproj /RegisterDesignPackages /RegisterPaths bin\ExpertInstaller.exe IDEPlugins\IDEFixPack.dll /PRELOAD:IDEPlugins\IDEFixPackStartup.bpl IDEPlugins\DDevExtensions2009.dll IDEPlugins\JclProjectAnalysisExpertDLL120.dll IDEPlugins\DfmCheck2009.bpl |
AW: 25 Jahre Delphi
Also es gibt immernoch keinen Weg, aus einer Batch/FinalBuilder diese environment.proj zu aktualisieren, ohne dafür die BDS zu starten?
z.B. irgendein Tool von Emba aufzurufen Schlimm ist auch, dass alle Imports, auch so Essentielle, mit einer Condition versehen sind und es dann auch keine Fehlermeldung oder wenigstens Logmeldung gibt, die angibt, welche Imports nicht ausgeführt wurden. Zumindestens via /preprocess kann man sich von MSBuild teilweise sagen lassen, was es macht, aber * die DPROJ selbst zu parsen ist pervers bis fast unmöglich * schön wöre es, wenn man das Ergebnis des letzten Schrittes bekommen könnte, direkt vor dem Ausführen * leider stoppt /preprocess wohl schon nach dem "Evaluate imports and properties" -> ![]() |
AW: 25 Jahre Delphi
Zitat:
Delphi-Quellcode:
sollte genügen.
GetItCmd -l=Hurz
|
AW: 25 Jahre Delphi
Boar geil. :thumb:
OK, -h sollte man auch nicht benutzen, aber -l= tut es auch (ohne die "nix gefunden"-Fehlermeldung).
Code:
cd /d "%ProjectPath%"
call "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin\rsvars.bat" "%BDS%\bin\GetItCmd.exe" -l= "%FrameworkDir%\MSBuild.exe" /nologo /target:Build /property:Platform=Win32 /property:Config=Debug "%ProjectFile%" Dann kann ich nun endlich den alten Code aus meinem FinalBuilderScript rauswerfen. * HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\22.0\Environment Variables mit dr reg.exe in einen Datei exportieren * vorne ein [xyz] einfügen * dann mit der INI-Funktion des FinalBuilders lesen und das als Umbegungsvariablen im FB setzen (könnte man auch pervers als Parameter an die MSBuild-Action übergeben) * die MSBuild-Actions will ich eh demnächt durch manuelle Aufrufe der MSBuild.exe ersetzen (Run DOS Command / BatchFile) * dann kann ich die GetItCmd und RSVars vor der MSBuild ausführen und muß nichts mehr manuell parsen * jetzt muß ich nur noch das perverse Parsen der rsvars.bat ersetzen In einer Batch kann man ja einfach CALL und sie ausführen lassen. Aber desetzte Variablen einer Batch als Umgebungsvariable zurück in den FinalBuilder, geht nicht. Ich lese die Datei "böse" als INI ein, Replace den Batch-Schrott und setzte es per VBScript als Umgebungsvariablen im FinalBuilder. (andere fügen ECHO an solche Dateien an und Parsen die Ausgabe dann im FinalBuilder) |
AW: 25 Jahre Delphi
Zitat:
Ich glaube ich lasse das auch so, dann habe ich die Kontrolle darüber. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:46 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