Página 1 de 1

Colocar executavel todo em memoria sem overlay

Enviado: 26 Fev 2009 11:52
por Sami Laham
Estive vendo no topico abaixo e la esta postado um problema semelhante ao que estou sofrendo aqui no meu sistema

viewtopic.php?f=4&t=8886

Antes de usar o XHarbour, eu utilizava o exospace no Clipper, e quando eu o utilizava, não usava arquivo de overlay e carregava todo na memória, sendo assim eu poderia a qualquer momento atualizar o executável no servidor sem problema, e quando o usuário saia do programa e entrava novamente já estava na nova versão.

No Xharbour já não acontece assim, pelo menos, com as cfg mais disseminadas no forum, se eu tentar atualizar o executável no servidor e algum usuário estiver utilizando o programa não é possível pq o executável está em usom sendo necessário sair todos os usuário que estejam utilizando o programa para atualizá-lo. È possível fazer da mesma forma no XHarbour por meio de alguma configuração específica? Se sim, como fazê-lo?

as 2 solucoes postadas no topico acima nao seriam muito interessantes p/ mim a de copiar os executaveis p/ a maquina local nao funciona pois uso ads e o meu sistema usa um dbf onde tem varias configuracoes de ambiente e se eu copia p/ maquina local ela esta sem ADS-remoto e nao funciona , a solucao do Leonardo parece funcionar inclusive testei aqui mas ainda os usuarios ficam sempre falando p/ esperar um pouco etc....

p/ mim o melhor seria mesmo continuar como no clipper onde eu copio o novo exectavel p/ rede e pronto.Alguem tem alguma ideia de como fazer isso ???

Grato, Sami.....

Re: Colocar executavel todo em memoria sem overlay

Enviado: 26 Fev 2009 13:13
por Maligno
Olá.
Seja bem-vindo ao fórum. :)

Lembre-se de que no DOS a execução dos programas é diferente da forma como é feita no Windows.
Mas esse esquema de atualização é muito simples de ser feito pelo próprio programa. É só utilizar um semáforo, checado periodicamente pela aplicação. Com uma thread isso é simples e fácil de fazer. Ademais, supondo que fosse possível, note que se o programa está rodando, ele terá de ser encerrado de qualquer maneira. Logo, trocar o programa enquanto ele está rodando não é tão útil quanto pode parecer. Eu próprio nem cogitaria fazer esse tipo de atualização.

Re: Colocar executavel todo em memoria sem overlay

Enviado: 27 Fev 2009 10:01
por Sami Laham
Ok Maligno eu vou realmente implementas um cai fora nos programas e pronto os usuario que respeitem as MSG do Sistema vou dar 2 minutos p/ eles acabarem tudo e sairem caso contrario o sistema da um bye-bye p/ ele, Grato pela resposta :)Pos

Re: Colocar executavel todo em memoria sem overlay

Enviado: 27 Fev 2009 12:16
por sygecom
Olá Sami,
Eu tenho usado direto aquele truque de mudar o nome do exe, e nem presciso avisar os usuarios para sair do sistema, evidente que as alterações só vão valer para os usuarios que sair e entrar novamente no sistema.

Re: Colocar executavel todo em memoria sem overlay

Enviado: 27 Fev 2009 12:34
por Maligno
Se a atualização for crítica, que envolva uma atualização na base de dados, por exemplo, o programa que estiver rodando obrigatoriamente terá de ser encerrado, já que a base de dados é comum a todos. Não tem como escapar disso. Logo, o melhor, a meu ver, já é adotar o encerramento forçado como o procedimento padrão, o que já resolve qualquer problema futuro.

Re: Colocar executavel todo em memoria sem overlay

Enviado: 28 Fev 2009 01:35
por Vander
Para atualizar os meus sistemas via internet, eu uso um programa que baixei do Site do Maligno (URL2File), então tenho em um Site um arquivo DBF onde toda atualização é anotada, e na primeira execução diária do sistema o URL2File baixa este DBF localiza nele o nome do sistema que o baixou e compara a versão instalada com a versão que esta no Site, se a do site for mais nova baixa (ou não dependendo da opção do usuário) avisa ao usuário que o sistema será fechado (para concluir a atualização) e fecha o sistema, assim que o sistema for reaberto é realizada toda atualização necessária. Se houver alteração em alguma base de dados é realizada a atualização. Para se realizar a verificação na base de dados (no caso de inclusão de algum campo) eu utilizo a rotina temcampo (do Rochinha).
Não encontrei ainda uma maneira melhor, mas continuo procurando. Temporariamente esta funcionando bem, mas como medida de segurança sempre antes de descompactar o novo arquivo, é realizada um backup e criado um arquivo de restaure (BAT).
No caso do sistema estar em uma rede, a verificação só é realizada no servidor e se não houver nenhum terminal aberto. (faço o mesmo para a indexação).

Vander

Re: Colocar executavel todo em memoria sem overlay

Enviado: 28 Fev 2009 15:36
por paiva
OI !

eu sempre usei :

quando entra no sistema e verifica se existe um atualiza.exe se existir faço:

del sfa.old
ren sfa.exe *.old
ren atualiza.exe sfa.exe

ai sou uma MSG falando que \tualizei e que ele sera forçado a entra denovo e fecho o prg


paiva