AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Package zur Laufzeit austauschen

Ein Thema von muedermann · begonnen am 21. Jul 2005 · letzter Beitrag vom 25. Jul 2005
Antwort Antwort
muedermann

Registriert seit: 27. Sep 2004
11 Beiträge
 
#1

Package zur Laufzeit austauschen

  Alt 21. Jul 2005, 11:10
Hallo,

dies ist das erste Mal, dass ich eine Frage hier poste und ich würde mich riesig freuen, wenn mir weitergeholfen werden kann.

In meinen Betrieb haben wir ein Programm Verwaltungsprogramm geschrieben und arbeiten seit einiger Zeit mit Delphi 7 Pro.

Da wir mehere Einzelanwendungen aus dem Programm starten, die alle in einem Programmverzeichnis liegen, überlegen wir die Standard Laufzeit-Packages zu verwenden (vcl, rtl ...), da so jede Anwendung deutlich kleiner wird. Zusätzlich möchte ich ein Laufzeit-Package mit befügen, in dem unsere (erstmal sehr wenige) Komponenten ebenfalls als bpl-datei mitgegeben werden. Auf diese greift das Programm zu. Wenn ich eine Komponente ändere und diese in einem neuen Laufzeit-Package mitgebe ist dies kein Problem. Dafür muss ich natürlich auch nicht die EXE neucompilieren, wenn ich eine Methode ändere. (Selbstverständlich darf ich nicht die Parameter ändern!) Das eigentliche Problem ist folgendes:

Ich möchte, dass die Anwendung die Komponenten aus der BPL holt (soweit kein Problem), diese aber dann komplett in den Arbeitsspeicher lädt (und die Datei freigibt), so dass ich die BPL-Datei während das Programm läuft austauschen kann. Zur Zeit ist dies nicht möglich, weil er mir sagt, dass die BPL-Datei gerade (vom Programm) verwendet wird. Ich möchte das Programm aber updaten können, ohne das jeder rausgehen muss. Mir ist bewusst, dass die Änderungen erst nach einem Neustart wirken würden, das ist aber nur logisch und mit eingeplant!

Kann mir jemand helfen???
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.202 Beiträge
 
Delphi 10.4 Sydney
 
#2

Re: Package zur Laufzeit austauschen

  Alt 21. Jul 2005, 11:40
Das wird nicht gehen! Dazu müsstest du auf dynamische Package-Loading umsteigen und das Programm die zu ladenden Packages z.B. im Temp-Verzeichnis des Users kopieren und von dort laden.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#3

Re: Package zur Laufzeit austauschen

  Alt 21. Jul 2005, 11:56
Ich hab das mit nem kleinen (komandozeilen) programm gelöst.

Hauptprog ruft updatetool auf -> hauptprog beendet sich -> dateien werden überschrieben -> hauptprog wird wieder gestartet
  Mit Zitat antworten Zitat
muedermann

Registriert seit: 27. Sep 2004
11 Beiträge
 
#4

Re: Package zur Laufzeit austauschen

  Alt 21. Jul 2005, 12:52
@ Bernhard:

Ich zweifel deine Aussage nicht wirklich an, jedoch kann mir erklärt werden, warum man meines Wissens nach DLL-Dateien schon einfach ersetzen kann? Die werden doch problemlos überschrieben und befinden sich zur Laufzeit im Arbeitsspeicher, oder irre ich mich da?

@ Hermes:

Leider ist diese Art keine Lösung für mich, da sich mehere Anwender (teilweise sehr viele) gerade im Programm befinden können, und die nicht einfach gekickt werden dürfen, wenn jemand das Update-Tool startet
  Mit Zitat antworten Zitat
muedermann

Registriert seit: 27. Sep 2004
11 Beiträge
 
#5

Re: Package zur Laufzeit austauschen

  Alt 25. Jul 2005, 09:15
Es tut mir ja fast Leid, dass ich meine Frage noch mal pusche, ich weiß, es ist zurecht verpönt. Jedoch kann man das vielleicht nach mehreren Tagen einmal machen. Wenn mir schon keiner direkt bei meinem Problem weiterhelfen kann, so kann mir vielleicht jemand erklären, warum man eine DLL zur Laufzeit austauschen kann und eine BPL nicht?
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#6

Re: Package zur Laufzeit austauschen

  Alt 25. Jul 2005, 09:49
Schau dir doch mal die Hilfe zu SysUtils an.
  Mit Zitat antworten Zitat
Robert_G
(Gast)

n/a Beiträge
 
#7

Re: Package zur Laufzeit austauschen

  Alt 25. Jul 2005, 09:57
Natürlich kannst du Packages zur Laufzeit entladen und neu laden!
Packages sind doch DLLs, allederdings mit ein paar gimmicks geschmückt, so dass man sie als Klassenbibliotheken benutzen kann.
Interessant wären da für dich:
Delphi-Referenz durchsuchenLoadPackage
Delphi-Referenz durchsuchenInitializePackage
Delphi-Referenz durchsuchenUnloadPackage
Delphi-Referenz durchsuchenFinalizePackage
Delphi-Referenz durchsuchenRegisterClass
Delphi-Referenz durchsuchenUnregisterClass
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:39 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