Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Disabled/Excluded Packages (https://www.delphipraxis.net/214767-disabled-excluded-packages.html)

himitsu 6. Mär 2024 13:36

Disabled/Excluded Packages
 
Moin Moin,

wie ist das eigentlich damit?
>> HKEY_CURRENT_USER\SOFTWARE\Embarcadero\BDS\**.0\Disabled Packages
>> DPROJ : <Excluded_Packages>

Einmal lassen sich ja in der IDE Registrierte Packages deaktivieren (nicht laden, bzw. entladen)
aber auch nochmal in den Projektoptionen (auch wenn nicht offensichtlich ersichtlich, außer z.B. im DIFF der Versionierung (in der *.dproj).

Steht was in der DPROJ, dann wird beim Laden/Entladen von Projekten, bzw. beim Wechsel des aktiven Projekts in einer Projektgruppe jenes ge-/entladen.
Das bereitet gern Probleme, wenn es beim Laden/Entladen zu Fehlern kommt.
Oder wenn wichtige DesignTimePackages nach Ladeproblemen ausversehn in der DPROJ gespeichert werden und dann ab und an "fehlen".


Es fällt auch kauf auf (niemand achtet auf die Titelzeile),
aber
Delphi-Quellcode:
Menü > Komponente > Packages installieren
regiert unterschiedlich, jenachdem ob ein Projekt geladen oder keine Projekte geladen sind.
* einmal nur Einstellung der IDE
* und das Andere speichert "auch" in den aktiven Projektoptionen



Nur wie ist das nun genau, mit den Optionen?
* kein <Excluded_Packages> vorhanden
* leeres <Excluded_Packages\> vorhanden
* <Excluded_Packages> mit Einträgen vorhanden
* in Registry deaktiviert, aber in <Excluded_Packages> nicht

Bei den mittleren Beiden werden Packages geladen und entladen, zumindestens wenn sich die Optionen der wechselnden Packages unterscheiden.
Aber auch beim Ersten?
Und was ist beim Letzten ... ist das dann eventuell geladen oder nie?




Ob der <Excluded_Packages>-Eintrag in der DPROJ vorhanden ist oder nicht ... kann mich nicht erinnern im Delphi irgendwo eine Option gesehn zu haben.

Kas Ob. 6. Mär 2024 14:28

AW: Disabled/Excluded Packages
 
Not sure if i understand the subject right.

But those entries in dproj were there since many years
Code:
                <Excluded_Packages>
                    <Excluded_Packages Name="
......
These reflect the disabled (not used or not to be used) with this project, the IDE unload these packages when open a project (well it should), while registry entries reflect the disabled packages (not loaded) in the IDE itself.

The whole thing for me looks like an abandoned nice feature to have, they failed to build it, or may be it could cost huge performance degradation with the IDE.

Take an example with one project (aka no projectgroup) it should work by unloading the marked to exclude packages, but with multiple projects in one project group, the IDE should unload these excluded packages (or reload the default) based on the activated project, On my XE8 with one project it does unload then modify the dproj on save, but fail to unload these packages after closing the project then reopening, also if there is two projects then the IDE do load them and doesn't follow of the unloading process per project as will reload them and they will stay there.

So yes some broken and/or abandoned functionality.
By the way i do/did use this disable packages for an opened application so many times, it enhance the responsiveness of the designer based on the project, but alas, the ide doesn't remember to unload later.

Uwe Raabe 6. Mär 2024 14:36

AW: Disabled/Excluded Packages
 
Packages unter Disabled Packages werden in Packages installieren ohne Check angezeigt und sind erstmal auch nicht geladen. Man kann sie aber sowohl mit als auch ohne aktivem Projekt über diesen Dialog laden. Sie werden dann aus Disabled Packages entfernt. Leider gibt es aktuell keine Möglichkeit, diese Packages wieder dauerhaft zu entladen - also wieder in Disabled Packages aufzunehmen. Die Option, dies ohne aktives Projekt als Vorgabe zu speichern ist im Laufe der Zeit verloren gegangen.

Die Excluded Packages werden bei aktivem Projekt im selben Dialog festgelegt. Beim Öffnen des Projekts werden dann diese Packages gegebenenfalls entladen. Man kann allerdings beim Laden eines Projekts keine Packages aus Disabled Packages laden, weil es dafür im Projekt keine Informationen darüber gibt. Ich persönlich hätte es bevorzugt, wenn man nur ein Mindestmaß an Packages in der IDE hätte und dann per Projekt die dort verwendete Packages nachladen könnte/müsste.

Näheres zu dem Thema kann man auch in meinem Blog nachlesen:
There Can Only Be One!
There Can Only Be One – At a Time!

himitsu 6. Mär 2024 15:11

AW: Disabled/Excluded Packages
 
Zitat:

Ich persönlich hätte es bevorzugt, wenn man
Nja, bei Einzelprojekten schon OK, aber wenn, dann würde ich es lieber bei der Projektgruppe speichern, wenn es eine gibt und falls es eine Option in den Projekten gibt, diese dann ignorieren.


Zumindestens bei unserer Projektgruppe ist es eigentlich auch nicht nötig, das jedes Package/DLL/EXE eigene Settings dafür mitbringt.



Problem/Frage ist jetzt,
Wir haben zentral über DisabledPackages so einiges Deaktiviert (richtet der FinalBuilder ein)

Und dann passiert es auch, dass in einzelnen Packages mal ausversehn was "Anderes" hinterlegt wirde, bzw. es nicht aktuell ist, oder eben durch Fehler beim Laden mal deaktiviert und dann gespeichert und committet wurde.



Drum war jetzt die Hoffnung, bzw. ist das Gefühl so, dass ohne diesen Punkt im DPROJ dann auch nichts mehr durch's Projekt gemacht wird.


Aktuell habe ich über DesignTimePackage auch ein Logging in der IDE, welche das Laden/Entladen von DLL (also auch BPL) ins Logfenster schreibt.
(es schreibt leider nicht was geladen wird, sondern geladen wurde, da die WinAPI dafür nur einen nachträglichen Trigger bereitstellt)

Wir hatten es schon mehrmals, dass es z.B. beim Kompilieren knallt und man dann nicht weiß wo es her kommt.
Wird ein Package kompiliert, dann werden alle davon abhängigen Packages entladen und nachher wieder geladen (durch Delphi und/oder Windows)
Und durch das Log sieht man nun was ge-/entladen wird und wenn es knallt, wass das letzte Modul vorher war und in welcher Richtung man schauen kann.

Nett ist auch, dass Delphi den/die Formdesigner beim Kompilieren entlädt.


Im XE ist es z.B. so, dass wenn du ein KomponentenPackage kompilierst, aber eine Form geladen ist, wo davon eine Komponente drauf liegt, dass es dann wunderbar knallte, weil der Komponentn-Instanz ihr Code unter Arsch weggerissen wurde.


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:54 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz