I made an application that uses the openssl dlls (libeay32.dll
and ssleay32.dll
).
It is indy using them, I don't call the dlls directly.
The simplest workaround i found to avoid an installer (i just delpoy an exe and i am ok with this approach) is to:
- put the dlls as resources of the exe
- on program start I extract them in the exe folder
- the exe uses them
This is perfect but I would like to improve the approach by extracting the dlls in a temp folder and not on the exe folder (that in many cases is the desktop).
The problem is that I don't know how to force the application to use the dlls in the temp folder, because now the behaviour is: if dlls are not in current directory try to search in the directories defined in the system path.
Who knows a solution to force indy to use the dlls in my temp path? (like "temporarly registering the dlls")
You can use
SetDllDirectory
to manipulate the DLL search order.If you are using an up-to-date version of Indy 10, the
IdSSLOpenSSLHeaders
unit has a publicIdOpenSSLSetLibPath()
function to tell Indy which custom folder to look in for the OpenSSL DLLs:Load the DLLs yourself with
LoadLibrary
as soon as you have written them to the temp folder.This will make Indy's
LoadLibrary
use your DLLs when they need them: