Entwickler-Ecke

Dateizugriff - Open SSL DLL's nicht im App-Verz. möglich?


NOS - So 04.11.18 19:20
Titel: Open SSL DLL's nicht im App-Verz. möglich?
Hallo und guten Abend,

ich würde gern wissen ob es möglich ist die DLL's libeay32.dll und ssleay32.dll zu nutzen ohne dass diese in dem Verzeichnis des Programmes sind sondern in einem benutzerdefinierten Verzeichnis.
Ich habe bisher keine Option gefunden in dem TIdSSLIOHandlerSocketOpenSSL einen Pfad etc. anzugeben.

Da ich mehrere Programme habe die diese DLL's nutzen möchte ich diese zentral in einem Verzeichnis lagern um im Updatefall nur diese auszutauschen.

Ich freue mich auf Eure Antworten.

Grüße ins Forum,

Andreas


Moderiert von user profile iconNarses: Topic aus Internet / Netzwerk verschoben am So 04.11.2018 um 18:50


Sinspin - Mo 05.11.18 13:13

Tante Google sagt zu define dll source folder [https://docs.microsoft.com/en-us/windows/desktop/dlls/dynamic-link-library-search-order] genau das was du suchst. Das war gleich der erste Eintrag.
Ich verwende die Methode mit dem Manifest da ich für ettliche ActiveX Komponenten eh ein Manifest brauche.

Für Fälle in denen ich die Dll selber laden kann gebe ich den kompletten Pfad mit an da einige Dlls Teil eines Plugin Systems sind und aus einem ganz anderen Verzeichnis kommen.


Delete - Mo 05.11.18 18:22

- Nachträglich durch die Entwickler-Ecke gelöscht -


jaenicke - Mo 05.11.18 19:19

user profile iconFrühlingsrolle hat folgendes geschrieben Zum zitierten Posting springen:
In deinen bisherigen Programm-Verzeichnis gehören die Dateien auch nicht hin.
In den Systempfad, wie leider leider in der Doku geschrieben wird, gehören sie aber erst Recht nicht. Das war mal unter Windows 9x so, aber ist seit Windows NT/2000 nicht mehr so gedacht und widerspricht den Systemrichtlinien...
Was, wenn zwei Programme OpenSSL in verschiedenen Versionen nutzen? Man kann ja nicht beide DLLs an die gleiche Stelle kopieren.

Deshalb regelt das normalerweise das MSI-Installationsprogramm und registriert die DLLs bei Windows, das dann im SxS Repository die DLLs in den verschiedenen Versionen vorhält und je nach Programm die passende Version bereitstellt.

Für portable Software ist das Verzeichnis, in dem die Anwendung liegt, die einfachste Variante.


NOS - Mo 05.11.18 20:05

Ich bin grad auf das hier in der idSSLOpenSSLHeaders gestossen ... vielleicht funktioniert es ja so


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure IdOpenSSLSetLibPath(const APath: String);
begin
  if APath <> '' then begin
    GIdOpenSSLPath := IndyIncludeTrailingPathDelimiter(APath);
  end else begin
    GIdOpenSSLPath := '';
  end;
end;


Delete - Mo 05.11.18 20:56

- Nachträglich durch die Entwickler-Ecke gelöscht -


NOS - Sa 17.11.18 22:29

Ich möchte offiziell feststellen, dass es genauso funktioniert

In idSSLOpenSSLHeaders die Funktion idOpenSSLSetLibPath nutzen und die SSL Dateien werden genau aus dem Verzeichnis genommen welches dort gesetzt wurde :-)

Lieben Dank an alle die sich beteiligt haben und ein schönes WE allerseits