AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Statisch eingebundenen DLLs in "privatem" Verzeichnis
Thema durchsuchen
Ansicht
Themen-Optionen

Statisch eingebundenen DLLs in "privatem" Verzeichnis

Ein Thema von uligerhardt · begonnen am 6. Mai 2010 · letzter Beitrag vom 6. Mai 2010
Antwort Antwort
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#1

Statisch eingebundenen DLLs in "privatem" Verzeich

  Alt 6. Mai 2010, 12:20
Wir haben eine kleine "Suite" von Programmen, die in verschiedenen Unterverzeichnissen eines gemeinsamen Verzeichnisses leben. Diese Programme benutzen gemeinsam ein paar DLLs. Nun stellt sich die Frage: Wo sollen die DLLs hin?
  • Ein Programmverzeichnis, in das ich sie legen könnte, gibt es nicht.
  • Ich könnte sie dem Benutzer nach system32 oder so installieren. Das würde ich gerne vermeiden.
  • Ich könnte sie in das "Wurzelverzeichnis" unserer Suite (oder ein Unterverzeichnis davon) packen. Dann müsste ich aber den Suchpfad des Systems anpassen (oder?), was ich auch lieber vermeiden würde.
Hat jemand Ideen dazu?

Uli.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#2

Re: Statisch eingebundenen DLLs in "privatem" Verz

  Alt 6. Mai 2010, 12:24
Wenn du die DLLs dynamisch lädst, dann könntest du sehr leicht einen Pfad mit angeben,

ansonsten einfach mal versuchen was passiert, wenn du einen relativen Pfad, bei den statischen Links, mit angibst.

PS: kennst du den Ordner C:\Programme\Gemeinsame Dateien ?
Dort einfach Unterverzeichnis für deine Suit anlegen.

[add]
http://msdn.microsoft.com/de-de/library/7d83bc18.aspx

> Die in der PATH-Umgebungsvariablen aufgeführten Verzeichnisse.
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#3

Re: Statisch eingebundenen DLLs in "privatem" Verz

  Alt 6. Mai 2010, 12:37
Zitat von himitsu:
Wenn du die DLLs dynamisch lädst, dann könntest du sehr leicht einen Pfad mit angeben,

ansonsten einfach mal versuchen was passiert, wenn du einen relativen Pfad, bei den statischen Links, mit angibst.
Ich vergaß zu erwähnen: Es handelt sich um Third-Party-Komponenten, die die DLLs statisch und ohne Pfadangabe beim external einbinden. Außerdem kann der Pfad sich ja je nach Programm ändern: Tool 1 z.B. liegt in einem Unterverzeichnis und bräuchte... external '..\Common\SomeLib.dll' , Tool 2 hingegen bräuchte... external '.\Common\SomeLib.dll' , weil es direkt im Wurzelverzeichnis liegt.

Zitat von himitsu:
PS: kennst du den Ordner C:\Programme\Gemeinsame Dateien ?
Dort einfach Unterverzeichnis für deine Suit anlegen.
Jo, aber dann müsste ich den Suchpfad anpassen, was ich vermeiden möchte. Bisher kommen wir nämlich mit xcopy-Installation aus.

Zitat von himitsu:
[add]
http://msdn.microsoft.com/de-de/library/7d83bc18.aspx

> Die in der PATH-Umgebungsvariablen aufgeführten Verzeichnisse.
Ist der Link OK? Geht bei mir nämlich nicht (Page Error).
Uli Gerhardt
  Mit Zitat antworten Zitat
blackfin
(Gast)

n/a Beiträge
 
#4

Re: Statisch eingebundenen DLLs in "privatem" Verz

  Alt 6. Mai 2010, 12:40
Du kannst den Programm-spezifischen DLL-Suchpfad deinen Programmen auch über die Registry mitteilen:

Erzeuge einfach unter
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\App Paths\
einen neuen Schlüssel mit dem Exe-Namen deines Programms und innerhalb des Schlüssels
eine neue Zeichenfolge "Path" und als Inhalt die Semikolon-getrennten Suchpfade für dlls.


Beispiel:

Deine DLL's liegen unter
"C:\Programme\MeineProgramme\DLL\"

Programm 1 heisst ProgrammEins.exe
Installiert ist es in "C:\Programme\MeineProgramme\Prog_1\"

Programm 2 heisst ProgrammZwei.exe
Installiert ist es in "C:\Programme\MeineProgramme\Prog_2\"

Jetzt trägst du im oben genannten Key diese Schlüssel ein:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\App Paths\ProgrammEins.exe\
Innerhalb des Schlüssels eine neue Zeichenfolge "Path" mit dem Inhalt "C:\Programme\MeineProgramme\Prog_1\;C:\Programme\ MeineProgramme\DLL\"

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\App Paths\ProgrammZwei.exe\
Innerhalb des Schlüssels eine neue Zeichenfolge "Path" mit dem Inhalt "C:\Programme\MeineProgramme\Prog_2\;C:\Programme\ MeineProgramme\DLL\"

Damit sucht das Programm beim Starten automatisch nach den statisch gelinkten DLL's zuerst im eigenen Programm-Pfad und in deinem DLL-Verzeichnis.

EDIT:

Den Schlüssel gibt es auch für HKEY_CURRENT_USER, wenn das Programm nur für einen User installiert ist.
  Mit Zitat antworten Zitat
QuickAndDirty

Registriert seit: 13. Jan 2004
Ort: Hamm(Westf)
1.929 Beiträge
 
Delphi 12 Athens
 
#5

Re: Statisch eingebundenen DLLs in "privatem" Verz

  Alt 6. Mai 2010, 12:42
JA der ist OK
Andreas
Monads? Wtf are Monads?
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Statisch eingebundenen DLLs in "privatem" Verz

  Alt 6. Mai 2010, 13:27
Zitat von QuickAndDirty:
JA der ist OK
Hmmm. Ich krieg den hier:
Zitat von MSDN: Page Error:
Sorry, we were unable to service your request.
Ich probier's halt später nochmal.

Edit: Boah, Stoff für Verschwörungstheorien! In meinem Firefox 3.6.3 kommt bei normalem Klick oder pasten der URL in die Adressleiste der Page Error. Mach ich ne neue Seite auf, stelle auf IE-Tab und paste die URL dann, dann klappt's.
Und http://msdn.microsoft.com/en-us/library/7d83bc18.aspx klappt auch ohne Umstände im Firefox (EN statt DE!). Weiß jemand, ob man diese automatische Übersetzerei im MSDN ein für allemal abstellen kann? Die nervt mich eh schon lange.
Uli Gerhardt
  Mit Zitat antworten Zitat
Benutzerbild von uligerhardt
uligerhardt

Registriert seit: 19. Aug 2004
Ort: Hof/Saale
1.746 Beiträge
 
Delphi 2007 Professional
 
#7

Re: Statisch eingebundenen DLLs in "privatem" Verz

  Alt 6. Mai 2010, 13:32
Zitat von blackfin:
Du kannst den Programm-spezifischen DLL-Suchpfad deinen Programmen auch über die Registry mitteilen:

Erzeuge einfach unter
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\Curr entVersion\App Paths\
einen neuen Schlüssel mit dem Exe-Namen deines Programms und innerhalb des Schlüssels
eine neue Zeichenfolge "Path" und als Inhalt die Semikolon-getrennten Suchpfade für dlls.
OK, das gefällt mir schon ganz gut.

Und Allen Danke für die Antworten bisher!
Uli Gerhardt
  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 06:02 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