Colocar executavel todo em memoria sem overlay

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Sami Laham
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 26 Fev 2009 09:37
Localização: SAO PAULO

Colocar executavel todo em memoria sem overlay

Mensagem 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.....
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Colocar executavel todo em memoria sem overlay

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Sami Laham
Usuário Nível 1
Usuário Nível 1
Mensagens: 8
Registrado em: 26 Fev 2009 09:37
Localização: SAO PAULO

Re: Colocar executavel todo em memoria sem overlay

Mensagem 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
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Re: Colocar executavel todo em memoria sem overlay

Mensagem 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.
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Colocar executavel todo em memoria sem overlay

Mensagem 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.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Vander
Usuário Nível 3
Usuário Nível 3
Mensagens: 214
Registrado em: 23 Jul 2004 01:43
Localização: João Monlevade - MG

Re: Colocar executavel todo em memoria sem overlay

Mensagem 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
HbMake v1.17
xHarbour build 0.99.70 Intl. (SimpLex)
Borland C++ 5.5.1
fivewin 6.12 (FREE)
Workshop 4.5
MEdit
paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

Re: Colocar executavel todo em memoria sem overlay

Mensagem 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
Responder