Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Elegir la carpeta para BPL's ¿? (https://www.clubdelphi.com/foros/showthread.php?t=60410)

elcolo83 01-10-2008 16:55:04

Elegir la carpeta para BPL's ¿?
 
Hola a todos!!! Abro este hilo para ver si alguien me puede ayudar con este problema:
Estoy haciendo una aplicacion que con plugins, con lo cual, en la maquina que instale la aplicacion debo copiar las BPL's de delphi que usa el proyecto. lo que quiero hacer es setear de alguna manera el directorio de busqueda de esas BPL (como ser vcl.bpl, etc) sin tener que copiarlo en "Windows\System" ni en la carpeta raiz del ejecutable, sino que quiero tenerlas en una carpeta exlusibamente para estos archivos aparte... alguien sabe como hacerlo???

ContraVeneno 01-10-2008 19:03:11

¿establecer el "Search Path" de tu proyecto no sirve?

elcolo83 01-10-2008 19:07:10

Hola ContraVeneno, gracias por contestar.... ya he probado esa opcion (entre otras tantas) y no funciona... yo creo que tiene que haber una forma de poner las bpl's en una carpeta que no sea la del exe ni ninguna del sistema... ya se me terminaron las ideas... escucho sugerencias

maeyanes 01-10-2008 19:19:00

Hola...

Agrega la ruta donde van a estar esos BPL's en la variable de sistema PATH:

Código:

PATH = %PATH%;C:\MyBPL's

Saludos...

elcolo83 01-10-2008 19:40:09

Ok, y en que parte del form hay que declararlo para que funcione???

maeyanes 01-10-2008 19:58:24

Hola...

Primero que nada, debes especificar bien que quieres hacer... vas a cargar los bpl's dinámicamente o quieres que la aplicación los cargue normalmente?

Por que si es lo primero, bastaría con que guardes la ruta de donde estarán los bpl's en algún archivo de configuración o el registro y cuando vayas a cargar un bpl, usas esa ruta para buscarlo.

Si quieres que sea normalmente, las bpl's tienen que estár en una carpeta que se encuentre dentro del PATH de Windows. PATH es una variable de ambiente global para Windows.

Para modificar esta variable desde Delphi puedes usar esta función:

Código Delphi [-]
// Forma de uso:
SetSystemEnvironmentVariable ('PATH', 'c:\windows;c:\programs\myapp');   

procedure SetSystemEnvironmentVariable (const name, value : string);
var
  rv : DWORD;

begin
  with TRegistry.Create do
  try
    RootKey := HKEY_LOCAL_MACHINE;
    OpenKey ('SYSTEM\CurrentControlSet\Control\SessionManager\Environment', False);
    WriteExpandString (name, value);
    SendMessageTimeout (HWND_BROADCAST, WM_SETTINGCHANGE, 0,
                      LParam (PChar ('Environment')),
                      SMTO_ABORTIFHUNG, 5000, rv);
    finally
      Free
    end
end;

Solo te advierto que esta función cambia todo el valor de la variable por uno nuevo y que esto puede ser desastroso para Windows.

También te comento que no es recomendable cambiar este valor dentro de tu aplicación. Esto mayormente se hace desde el proceso de instalación de las aplicaciones, ya que es una variable que no deberías modificar cada que tu aplicación inicie...



Saludos...

elcolo83 02-10-2008 15:10:10

Como para ir cerrando este hilo entonces creo que lo adecuando entonces es poner todo junto (ya que no queda otra) porque tocar esa clave no siempre es fiable porque por lo que probe si el PATH es una cadena muy larga el CMD de windows no ejecuta algunos comandos... Otra de las opciones que intente y anda bien es crear un icono y poner la carpeta de trabajo donde estan las bpl's y ahi si anda...
Creo que eso es todo...
Muchas gracias maeyanes y ContraVeneno por su ayuda

mcs 01-06-2010 08:53:21

Hola,

En Delphi 2010 tambien ocurre esto que los BPL sólo se buscan en la carpeta del ejecutable y los directorios que estan en el PATH, o hay alguna forma de indicar donde están los BPL?

Saludos,

Marc

Neftali [Germán.Estévez] 01-06-2010 10:40:58

Una pregunta. Estos Plugins están cargados linkados estáticamente al EXE. O dicho en otras palabras, ¿Lo cargas utilizando LoadPackages o simplemente has compilado con packages?

Si es lo segundo, como entiendo, debes tenerlos, como han dicho:
* Directorio del EXE
* Directorios del Path

Si fuera el primer caso podrías cargarlos desde donde quisieras.

mcs 01-06-2010 10:51:02

Cita:

Empezado por Neftali (Mensaje 365812)
Una pregunta. Estos Plugins están cargados linkados estáticamente al EXE. O dicho en otras palabras, ¿Lo cargas utilizando LoadPackages o simplemente has compilado con packages?

Si es lo segundo, como entiendo, debes tenerlos, como han dicho:
* Directorio del EXE
* Directorios del Path

Si fuera el primer caso podrías cargarlos desde donde quisieras.

Hola,

Lo que yo uso son directamente los packages del Delphi, nada de carga dinámica. Solo era para no tener tantos ficheros en la carpeta de instalación, pero da igual, lo copiaré todo allí y ningún problema.

Nano Ramírez 15-04-2025 18:03:17

Cita:

Empezado por Neftali [Germán.Estévez] (Mensaje 365812)
Una pregunta. Estos Plugins están cargados linkados estáticamente al EXE. O dicho en otras palabras, ¿Lo cargas utilizando LoadPackages o simplemente has compilado con packages?

Si es lo segundo, como entiendo, debes tenerlos, como han dicho:
* Directorio del EXE
* Directorios del Path

Si fuera el primer caso podrías cargarlos desde donde quisieras.

Tengo duda, yo tengo un bpl que funciona correctamente y lo cargo con LoadPackage, el problema es que si lo muevo de su ruta predeterminada o fuera de donde esta el .exe, ya no me lo carga a pesar de ponerlo en alguna otra ruta del path, o bien, desde el Windows/System32 (que también está en el search path y en el library path. Se debe poner una ruta específica para este tipo de carga en algún otro lugar?

Neftali [Germán.Estévez] 16-04-2025 08:18:45

Cita:

Empezado por Nano Ramírez (Mensaje 563813)
Tengo duda, yo tengo un bpl que funciona correctamente y lo cargo con LoadPackage, el problema es que si lo muevo de su ruta predeterminada o fuera de donde esta el .exe, ya no me lo carga a pesar de ponerlo en alguna otra ruta del path, o bien, desde el Windows/System32 (que también está en el search path y en el library path. Se debe poner una ruta específica para este tipo de carga en algún otro lugar?

Si lo cargas con LoadPackage no debería haber problemas para moverlo a otro sitio, siempre y cuando:
1) Al cargarlo con LoadPackage indiques la nueva ruta completa de donde lo estás cargando (silo has movido).
2) Que no tenga dependencias de otros packages o librerías (en ese caso deberías moverlos también a la nueva ubicación).

Nano Ramírez 17-04-2025 00:10:23

Justamente encontré que faltaban librerías dependientes.
Por si a alguien más le pasa, a mí me funcionó entrar a Project→Deployment para poder ver las librerías necesarias y sus ubicaciones.


La franja horaria es GMT +2. Ahora son las 13:21:56.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi