Array
(
)

Duvida - Atualização de Sistema modularizado em BPL??

Macario
   - 03 fev 2006

Olá boa tarde a todos.

Estou pesquisando sobre modularizar usando BPL, e fiquei com uma duvida:

Situação:
Estando um aplicativo composto por 1 executavel e 2 blp´s, rodando no servidor, é possivel atualizar as bpl´s mesmo que 1 ou mais usuarios estejam acessando esse aplicativo e uma ou outra blp, sem a necessidade de que os mesmos saiam do aplicativo ou fechem o form da tal bpl em uso?

Isso seria bom, pois disponilizaria meios para poder efetuar atualizações automaticas.

:arrow:

Alexandre Macário


Macario
   - 05 fev 2006

Up :arrow:


Massuda
   - 05 fev 2006


Citação:
...é possivel atualizar as bpl´s mesmo que 1 ou mais usuarios estejam acessando esse aplicativo e uma ou outra blp, sem a necessidade de que os mesmos saiam do aplicativo ou fechem o form da tal bpl em uso?
Como um BPL é uma DLL melhorada, a não ser que ninguém tenha carregado o BPL, provavelmente todos terão que sair do programa. Aliás, não existe nenhuma forma de atualizar um executável que esteja em uso por alguém.


Macario
   - 06 fev 2006

Olá bom dia.

Pensei que utilizando a modulizarição por BPL, a mesma permitiria atualizações independentes.

Tipo:

Entrei no exe, nesse exe tenho 2 form, entro no form1. Ai digamos que esse form1 precisa ser atualizado. Se eu fechar ele ´eu teoricamente´ imagino que a BPL deveria ser liberada não é? Ai então eu poderia substitui-la.

:arrow:


Massuda
   - 06 fev 2006


Citação:
Entrei no exe, nesse exe tenho 2 form, entro no form1. Ai digamos que esse form1 precisa ser atualizado. Se eu fechar ele ´eu teoricamente´ imagino que a BPL deveria ser liberada não é? Ai então eu poderia substitui-la.
Sim, desde que seu programa descarreque o BPL via UnloadPackage e ninguém mais esteja usando a BPL. Entretanto, o efeito não será imediato... o Windows ´segura´ ainda por alguns segundos (menos de 1 minuto, acho) o BPL.


Macario
   - 06 fev 2006

Putz. :?

Nesse caso eu teria que trabalhar com toda a aplicação disponivel por usuário, ao invez de centralizar no servidor.

seria algo com

#Código

var  lib: HMODULE;
begin
lib:= LoadPackage(´Teste_form_2.bpl´);
try
frm2 := Tfrm2.Create(nil);
try
frm2.ShowModal;
finally
FreeAndNil(frm2);
end;

finally
UnloadPackage(lib);
end;


Um detalhe, quando entro no exe, e ja tento alterar a BPL, ele ja esta barrando, dizendo que esta em uso, sendo que não fiz a chamada ainda.