El problema no está en
ExtractFileDir, porque cambié un poco el código para que me mostrara un mensaje si existe el archivo o no, y aún así me aparece el error de que no existe el archivo
Funciones.dll, ni si quiera me muestra el mensaje "existe" o "no existe", que he puesto en los ShowMessage.
Código:
If FileExists( ExtractFilePath( Application.ExeName ) + 'Funciones.dll' ) Then
ShowMessage( 'existe' )
Else
Begin
ShowMessage( 'no existe' );
Directory := ExtractFileDir( ParamStr( 0 ) );
mxStorage1.ExtractTo( Directory );
End;