![]() |
Delphi GetIt Package Manager Command Line
Aktuell arbeite ich am Aufsetzen eines automatisierten Test Servers für unsere Delphi Programme. Um unsere Tools automatisiert zu testen verwenden wir Jenkins und virtuelle Maschinen als Jenkins Windows slaves. Auf diesen wird Delphi mit Hilfe
einer silent Installation installiert (da wir auf den slaves nichts manuell selber installieren, alles nur mit batch files). Einige unsererer Apps benötigen jedoch noch zusätzliche Packages, welche wir bisher über den GetIt Package manager installieren konnten (zum Beispiel: LockBox3). Auf den Windows slaves jedoch soll dies auch mit Hilfe eines batch files komplett automatisert geschehen. Nun wollte ich fragen, ob dies denn möglich ist und wenn ja, wie (zum Beispiel: Nutzen des getitcommand tools, welches jedoch laut Foren nicht supportet wird?). |
AW: Delphi GetIt Package Manager Command Line
![]() Bin aber leider noch nicht viel weiter gekommen. Du kannst das Gewünschte auf auf einem PC via GetIt runterladen/installieren und dann die nötigen Komponenten/Verzeichnisse kopieren. %USERPROFILE%\Documents\Embarcadero\Studio\21.0\Ca talogRepository (C:\Users\%USERNAME%\...) Dort findest je Komponente ein Verzeichnis, da drin noch ein Unterverzeichnis und dort dann oftmals die BAT/CMD/EXE des jeweiligen Installers. Ansonsten: Ich glaub ich hatte in der OpenToolsAPI (OTA) ein paar Interfaces für GetIt gesehen. |
AW: Delphi GetIt Package Manager Command Line
Liste der Anhänge anzeigen (Anzahl: 1)
Leider gibt es bei der LockBox keinen installer im entsprechendem Verzeichnis ("C:\Users\%USERNAME%\Documents\Embarcadero\Studio \20.0\CatalogRepository\LockBox-3.7"). Es gibt nur eine GetItInstaller.dat datei?
Anhang 52991 |
AW: Delphi GetIt Package Manager Command Line
Liste der Anhänge anzeigen (Anzahl: 2)
Zitat:
Dachte anfangs da stünde drin was gemacht werden muß .... aber neeeeee Was zu machen ist, das steht in HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\21.0\CatalogRepository\Elements %USERPROFILE%\Documents\Embarcadero\Studio\21.0\CatalogRepository\LockBox-3.7-Sydney\packages\Sydney\Delphi\*.dpr oder *.dproj Du kannst alle .DPR mit DCC32 kompilieren oder mit MSBuild, bzw. über BDS.exe die .DPROJ
Delphi-Quellcode:
Bei MSBuild und BDS würde auch PreBuild- und AfterBuild-Script mit ausgeführt.
bds -np -b C:\...\xxx.dproj
bds -np -p Delphi -b C:\...\xxx.dproj // im RAD Studio nicht sinnlos das C++ mit laden Anschließend mußt du aber noch die Packages im Delphi registrieren, da über BDS.exe nur COMPILE oder BUILD angestoßen werden kann, aber nicht INSTALL. Via OpenToolsAPI könnte man Projekte laden und das Compilieren+Installieren starten. |
AW: Delphi GetIt Package Manager Command Line
Ach ja, wir haben inzwischen alles auf Komponenten umgestellt, wo wir auch den Quellcode bekommen.
Im Notfall selbst auf neues Delphi umstellbar (wenn der Hersteller nicht hinterherkommt oder tot ist) und auch selbst Bugfixe/Anpassungen einbauen können. Dieses liegt im Git (zwei Repos für externe Komponenten und für das eigene Zeugs) und wird vorwiegend im FinalBuilder kompiliert. (die eigenen Projekte auch im Delphi) Der FB registriert ebenfalls die Packages im Delphi HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\21.0\Kn own Packages deregistriert vorher gleichnamige Packages (z.B. von einer lokalen Installation oder einer anderen Version) und räumt die beim Arbeiten/Compilieren/Debuggen im Delphi deaktivierten Packages auf HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\21.0\Di sabled Packages Vorteil ist auch, dass man abwechselnd mit unterschiedlichen Versionen der Komponenten arbeiten kann. z.B. alte Version für rückwärtige Bugfixe, oder schon die neue Version, bevor sie im Master an alle Verteilt wurde. Wenn jeder Entwickler mit einer eigenen/anderen Version (über das GetIt) unsere Projekte kompilieren würde, dann gäbe es auch ein perfektes Chaos und würde bestimmt oft knallen, wenn Interfaces geändert wurden. Aber ja, wenn man im GetIt eigene Packet-Quellen angeben könnte und man darüber seine "eigenen" Komponenten verteilen würde, dann wäre das bestimmt eine witzige Idee hierfür GetIt zu verwenden und die Komponenten über die IDE zu verteilen, anstatt über ein externes Programm. |
AW: Delphi GetIt Package Manager Command Line
Du kannst die Idee ja gerne als QP feature request anbringen.
|
AW: Delphi GetIt Package Manager Command Line
Zitat:
Kannst ja mal ausprobieren, ob das dir jetzt hilft. Zitat:
sonst klickt man sich dumm und dusslig, während man sich dazwischen immer wieder zu tode langweilt. |
AW: Delphi GetIt Package Manager Command Line
Zitat:
Ich habe aber mal für die Installation für die LockBox ein Batch Skript geschrieben (Vorlage: ![]() Leider bekomme ich nun immer die Fehlermeldung, dass die designide fehlt (beim kompilieren von LockBox3FMXDD.dproj und LockBox3VCLDD.dproj). Diese gibt es auch nicht im entsprechenden lib order unter win64 nur für win32. Sollte dies eh nicht nur für win32 eine Rolle spielen? Das Batch Skript:
Code:
CALL "C:\Program Files (x86)\Embarcadero\Studio\20.0\bin\rsvars.bat"
ECHO %BDS% ECHO %BDSCOMMONDIR% SET BPLREG="HKEY_CURRENT_USER\Software\Embarcadero\BDS\20.0\Known Packages" ECHO %BPLREG% SET LIBREG="HKEY_CURRENT_USER\Software\Embarcadero\BDS\20.0\Library\Win64" ECHO %LIBREG% SET BPLPATH="%BDSCOMMONDIR%\Bpl" ECHO %BPLPATH% SET BDSCATALOGREPO=C:\Users\%USERNAME%\Documents\TMP\Delphi ECHO ================================================================================ rem LockBox3 ECHO LockBox3 ECHO LockBox3DR rem add search path for library SET LIB_LOCKBOX=%BDSCATALOGREPO%\LockBox3\design\;%BDSCATALOGREPO%\LockBox3\run\ciphers\;%BDSCATALOGREPO%\LockBox3\run\cryptography\;%BDSCATALOGREPO%\LockBox3\run\hashes\;%BDSCATALOGREPO%\LockBox3\run\library surface\;%BDSCATALOGREPO%\LockBox3\run\RSA\;%BDSCATALOGREPO%\LockBox3\run\utilities :: extract path from registry entry FOR /F "tokens=3* skip=2" %%a in ('reg query %LIBREG% /v "Search Path"') do set "DELPHI_LIB_SEARCH=%%b" ECHO New variable DELPHI_LIB_SEARCH = %DELPHI_LIB_SEARCH% :: check if substring is already present in path -> if not: add it to path echo %DELPHI_LIB_SEARCH%|find /i "%LIB_LOCKBOX%">nul || set DELPHI_LIB_SEARCH=%DELPHI_LIB_SEARCH%;%LIB_LOCKBOX% reg add %LIBREG% /v "Search Path" /t REG_SZ /d "%DELPHI_LIB_SEARCH%" /f :: compile in order to get *.bpl msbuild "%BDSCATALOGREPO%\LockBox3\packages\Rio\Delphi\LockBox3DR.dproj" /t:Build /p:Configuration=Release /p:platform=Win64 IF NOT %ERRORLEVEL%==0 GOTO ERROR reg delete %BPLREG% /v "%BPLPATH%\LockBox3DR260.bpl" /f >NUL 2>&1 reg add %BPLREG% /v "%BPLPATH%\LockBox3DR260.bpl" /t REG_SZ /d "Turbo LockBox3 Delphi package" >NUL ::ECHO LockBox3FMXDD msbuild "%BDSCATALOGREPO%\LockBox3\packages\Rio\Delphi\LockBox3FMXDD.dproj" /t:Build /p:Configuration=Release /p:platform=Win64 IF NOT %ERRORLEVEL%==0 GOTO ERROR reg delete %BPLREG% /v "%BPLPATH%\LockBox3FMXDD260.bpl" /f >NUL 2>&1 reg add %BPLREG% /v "%BPLPATH%\LockBox3FMXDD260.bpl" /t REG_SZ /d "Turbo LockBox3 FMX designtime package" >NUL ECHO LockBox3VCLDD msbuild "%BDSCATALOGREPO%\LockBox3\packages\Rio\Delphi\LockBox3VCLDD.dproj" /t:Build /p:Configuration=Release /p:platform=Win64 IF NOT %ERRORLEVEL%==0 GOTO ERROR reg delete %BPLREG% /v "%BPLPATH%\LockBox3VCLDD260.bpl" /f >NUL 2>&1 reg add %BPLREG% /v "%BPLPATH%\LockBox3VCLDD260.bpl" /t REG_SZ /d "Turbo LockBox3 VCL designtime package" >NUL GOTO DONE :ERROR ECHO ================================================================================ ECHO FEHLER aufgetreten! ERRORLEVEL = %ERRORLEVEL% ECHO ================================================================================ GOTO END :DONE ECHO ================================================================================ ECHO Build erfolgreich! ECHO ================================================================================ GOTO END :END SET BPLREG= SET BPLPATH= SET LIBREG= SET BDSCatalogRepository= SET LIB_PATH_LOCKBOX= SET BDSCATALOGREPO= SET LIB_LOCKBOX= SET DELPHI_LIB_SEARCH= |
AW: Delphi GetIt Package Manager Command Line
hat sich erledigt. Hatte die falsche platform fürs kompilieren -> einfach auf win32 und jetzt läufts.
|
AW: Delphi GetIt Package Manager Command Line
Jupp, die IDE gibt es nur als 32 Bit, also braucht man DesignTime-Packages ausschließlich als Win32 und deswegen gibt es diese gegeimen IDE-DCUs auch nur in Win32.
|
AW: Delphi GetIt Package Manager Command Line
Hat das inzwischen jemand zum Laufen gebracht?
Vor Aufruf der getitcmd.exe soll man einmal die rsvars.bat aufrufen, um die Umgebungsvariablen von der IDE zu setzen. Auflisten der Packages funktioniert. (so halbwegs) Nur das mit dem Installieren, also der Hauptfunktion, ... naja.
Code:
cd /d "C:\Program Files (x86)\Embarcadero\Studio\21.0\bin"
rsvars getitcmd --list= --filter=installed getitcmd --list= --filter=all getitcmd --install=Navigator-1.6.1 --accepteulas --installdeferred --verb=minimal --donotsetenvfile Nach
Delphi-Quellcode:
stürzt GetIt ab, nachdem es fertig ist.
getitcmd --list= --filter=all
Code:
Bei
...
Command finished with success! Runtime error 217 at 00409825
Delphi-Quellcode:
heißt es
getitcmd --install=Navigator-1.6.1 --accepteulas --installdeferred --verb=minimal --donotsetenvfile
Code:
[edit] OK, Installdeferred, darf nicht mit Anderem zusammen. [/edit]
ERROR: Too many arguments.
Das sind übrigens auch so in etwa die Parameter, welche die GetIt-Dependencies in den Projektoptionen benutzen, was auch nicht benutzbar ist.
Code:
aus CodeGear.Common.Targets (wer zu den GetIt-Dependencies etwas sucht und dort findet, dass man BDSHost=true in die Umgebungsvariablen schreiben soll ... hier sieht man das Gegenstück dazu)
[Warning Warnung] Checking GetIt package dependencies
[MSBuild Fehler] Unerwarteter Fehler bei der GetItCmd-Aufgabe. System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei Borland.Build.Tasks.Common.CommandLineTask.Execute() bei Borland.Build.Tasks.Shared.GetItCmd.Execute() bei Microsoft.Build.BuildEngine.TaskEngine.ExecuteInstantiatedTask(EngineProxy engineProxy, ItemBucket bucket, TaskExecutionMode howToExecuteTask, ITask task, Boolean& taskResult)
Code:
<!-- Since there's an IDE limitation about handling more than one compilation,
GetItCmd should be called only when compiling from command line --> <Target Name="_CheckGetItPackageDependencies" DependsOnTargets="_CheckBDSHostObject" Condition="('$(GetItPackages)'!='') And '$(BDSHost)'!='true'"> <CallTarget Targets="_ExecGetItCmd"/> </Target> <Target Name="_ExecGetItCmd"> <Warning Text="Checking GetIt package dependencies"/> <GetItCmd ProjectFileName="$(MSBuildProjectFullPath)" Accept_eulas="true" InstallPackages="$(GetItPackages)" DoNotSetEnvFile="true" Verbosity="Normal" /> </Target> Und bei
Delphi-Quellcode:
will GetIt erstmal alles/einiges deinstallieren. (da hab ich den UAC-Dialog abgebrochen, bevor was kaputt geht)
getitcmd --install=Navigator-1.6.1 --accepteulas
Als Erstes gleich mal die Delphi-IDE selbst. (scheint das zu sein, was man sich mühevoll über den GetItInstaller runtergeholt hatte)
Code:
Uninstalling: Uninstalling Library "Delphi Common Files Enterprise German"...
Anfangen wollte ich erstmal mit. 10.4Patch1-10 10.4Patch2de-10 10.4Patch3-10 ParnassusCoreEditor-1.6.1 ? Navigator-1.6.1 Bookmarks-1.6.1 Icons8-1.0 (Komponenten für's Programm werden wohl nie über GetIt verwendet, so lange man dort keine eigenen/alternativen Paketquellen angeben kann und somit auf's Gutdünken Embas angewiesen ist, außerdem haben wir die Fremdkomponenten größtenteils als Quellcode in einem eigenen Git-Repository ... den Teil aber über eine eigene Paketquelle wäre schon interessant, anstatt es manuell im FinalBuilder zu machen) Man findet ja nicht viel zum Thema, aber da hat/hatte man auch das selbe Problem, wo Packages deinstalliert werden. ![]() |
AW: Delphi GetIt Package Manager Command Line
Zitat:
Delphi-Quellcode:
, sonst kommt "RADSTUDIO.JSON metadata not found".
getitcmd -c=useonline
|
AW: Delphi GetIt Package Manager Command Line
Ich bringe das Thema nach sehr langer Zeit mal wieder nach oben :-)
Gibt es eine Möglichkeit die Pakete darüber zu installieren ohne die absolute Version anzugeben? Hintergrund ist, ich möchte auf meinem bestehenden System die Paketliste exportieren, dann Delphi updaten und die Packages wieder installieren. Allerdings ändert sich natürlich auch die Paketversion mit neueren Delphiversionen... Praktisch wäre, wenn man die Pakete wie mit pip installiren könnte und getit die jeweils aktuelle und zur Delphiversion passende auswählen würde. z.b.
Code:
anstatt
getitcmd --install=Bookmarks --accepteulas --verb=minimal --donotsetenvfile
Code:
getitcmd --install=Bookmarks-1.6.2 --accepteulas --verb=minimal --donotsetenvfile
Viele Grüße Bastian |
AW: Delphi GetIt Package Manager Command Line
hab es mal mit der "EdgeBrowserDemo" versucht
das scheint leider nicht zu klappen...
Code:
getitcmd --install=EdgeBrowserDemo
|
AW: Delphi GetIt Package Manager Command Line
Du könntest ja das
![]() |
AW: Delphi GetIt Package Manager Command Line
Es heißt ja auch EdgeBrowserDemo-1.0 :wink:
(ich finde immernoch, dass die Versionsnummer im Namen der größte Schwachsinn ist, zumindest wenn nicht optional)
Code:
getitcmd --list=
getitcmd --filter=all --list= getitcmd --filter=all --list=EdgeBrowserDemo Sicherheitshalber vorm getitcmd noch die rsvars.bat ausführen (weiß nicht ob es noch nötig ist, aber mit lief es bisher immer am Besten)
Code:
CD: Bzw. ich gehe im Explorer in dieses Verzeichnis (ist inzwichem im AutoComplete drin), schreibe oben in die Adressleiste
cd /d "C:\Program Files (x86)\Embarcadero\Studio\22.0\bin"
rsvars.bat getitcmd --install=...
Delphi-Quellcode:
+ [Enter] und dann nur noch das Nachfolgende
cmd
|
AW: Delphi GetIt Package Manager Command Line
Zitat:
Das schaue ich mir mal an. Danke |
AW: Delphi GetIt Package Manager Command Line
[QUOTE=himitsu;1519577]Es heißt ja auch EdgeBrowserDemo-1.0 :wink:
(ich finde immernoch, dass die Versionsnummer im Namen der größte Schwachsinn ist, zumindest wenn nicht optional) ja, das ist ja das doofe. Ich will ja nicht die Version pinnen. Ich will ja nur unter einer neuen Delphiversion die entsprechend aktuell verfügbare Version des gleichen Pakets installieren. Das Ziel soll ja sein, eine neue Delphiversion so schmerzfrei wie möglich aufzusetzen. 8-) |
AW: Delphi GetIt Package Manager Command Line
Zitat:
Das Programm kann das sogar schon :thumb: Habe gerade in den Quellen geschaut. Einfach aus der exportierten Liste händisch die Versionsnummern entfernen und fertig. Beim Import wird automatisch geprüft mit "StartsText" |
AW: Delphi GetIt Package Manager Command Line
Habe nun versucht, einen neue Delphiversion (11.3) mittels AutoGetIt um die benötigten Pakete zu erweitern.
Das Problem ist, dass es von vielen Paketen welche mit XXXcb und ohne - alson nur XXX gibt. Das heißt hier muss eine manuelle Auswahl erfolgen, oder der Paketnamen den Abschließenden Bindestrich bis zur Versionsbezeichnung beinhalten. Die Installation einiger Pakete hat er mit Fehler abgebrochen und andere erfolgreich installierten Pakete wurden als nicht installiert angezeigt... Also so ganz automatisch funktioniert das bei mir leider noch nicht... |
AW: Delphi GetIt Package Manager Command Line
Zitat:
wenn du die Delphi-IDE als Admin startest. :freak: (mit dem User, der für die Installation benutzt wurde) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:33 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