Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3295 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Boa , pessoal , to com uma duvida aqui , pois to migrando hj meu

sistema em Delphi pra Lazarus , e hj estou utilizando uma pasta em um

servidor pra ficar armazanados os EXEs do meu ERP , ai nas estacoes ,

so coloco

o atalho do programa nos desktop , esse atalho no caso vem do

compartilhamento que fica no servidor ,

queria saber se é assim que a maioria faz , ou se é armazado o exe em

cada estacao mesmo , pois como to convertendo de Delphi pra lazarus ,

to quebrando meu sistema em varios EXE´s , ai fiz uma rotina pra

chamar um exe a partir de outro , so que qndo , esta vindo o exe de

outra estacao , essa chamada passa a ser lenta , por ta vindo pela

rede , ai minha duvida seria : existe uma forma melhor pra ser feito

isso , tipo poderia armazenar os exe´s nas estacoes mesmo , assim

ficando mais rapido a chamada deles , e como eu faria com atualizacao

de programa , pra nao acontecer de uma estacao deixar de ser

atualizada ?

quem puder me dar uma ideia , agradeço .

Adilson .

 

  • Membros Pro
Postado

ola

 

eu faco assim

 

coloca o .exe em cada estacao

 

coloco a versao mais atual no servidor

 

no .exe de cada estacao tem uma rotina que checa se a data do .exe da estacao e menor que .exe do servidor

se for menor informo que tem versao nova pra atualizar

 

e mais ou menos isso

Postado

Entao . isso que eu estava pensando mesmo , mais como é feita a atualizacao nas estacoes , é manualmente , ou vc faz algum programa pra sincronizar as versões ?

 

 

Agradeço sua opnião .

 

Adilson Pazzini

  • Membros Pro
Postado

Ola

 

poderia ser automatico mas fiz manual mesmo

 

quando o .exe da estacao detecta nova versao informa ao usuario e sai .exe

 

o usuario clica em um .exe que copia o .exe do servidor pra estacao

 

eu iria ate mudar pra ser automatico mas agente faz uma coisa e outra e outra e outra,kkkk ai deixa pra depos

 

é simples e funciona e o pessoal nao reclamou ai ja viu

 

abraco

  • Consultores
Postado

Bom dia a todos,

 

Eu faço algo semelhante, vejam:

 

1. Não utilizo a data do executável pois este me limita a somente uma atualização diária, utilizo a versão do executável, para realizar a comparação.

 

2. A atualização do executável na estação é feita automatica da seguinte forma:

    * O acesso aos módulos ocorre através da execução prévia de um programa "MENU";

    * É esse programa que compara as versões dos executáveis que estão na estação com os que estão no servidor;

    * Se a versão no servidor for a mais recente, o programa realiza a cópia para a estação substituindo o que ali encontra-se.

    * Só depois de tudo comparado e atualizado que o programa "MENU" libera o usuário para escolher qual é o módulo que ele deseja executar.

 

Quando a atualização é critica, peço para o usuário finalizar todos os programas e depois executar o programa "MENU", caso contrario, simplismente disponibilizo a nova versão.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

obrigado pela ajuda , Italo , queria saber com vc , se essa versao que vc compara , é aquela que fica no proprio exe mesmo , q no caso no proprio delphi tem como versionar o exe , e tambem se vc utliza alguma tabela no banco pra comparacao , e por ultimo , seus modulos estao quebrados em EXE ou DLL . A conversa entre ele fica boa qndo esta local  ..

 

 

Desde ja agradeço .

 

 

Adilson

  • Consultores
Postado

Adilson,

 

O Delphi tem sim uma forma de "versionar" o executável, não utilizo nenhuma tabela para comparar as versões, os módulos estão quebrados em EXE.

 

Eu penso que se deixarmos trafegar pela rede somente os dados, temos um ganho de performace.

 

Me corrigem se eu estiver errado.

 

Como atribuir uma versão na sua aplicação feita em Delphi:

 

   * Project \ Options aba Version Info

 

Como ler a versão de um executável:

 

function TfrmInfCopiando.GetBuildInfo(Executavel: String): string;
var
 VerInfoSize: DWORD;
 VerInfo: Pointer;
 VerValueSize: DWORD;
 VerValue: PVSFixedFileInfo;
 Dummy: DWORD;
 V1, V2, V3, V4: Word;
begin
 VerInfoSize := GetFileVersionInfoSize(PChar(Executavel), Dummy);
 GetMem(VerInfo, VerInfoSize);
 GetFileVersionInfo(PChar(Executavel), 0, VerInfoSize, VerInfo);
 VerQueryValue(VerInfo, '\', Pointer(VerValue), VerValueSize);
 with VerValue^ do
  begin
   V1 := dwFileVersionMS shr 16;
   V2 := dwFileVersionMS and $FFFF;
   V3 := dwFileVersionLS shr 16;
   V4 := dwFileVersionLS and $FFFF;
  end;
 FreeMem(VerInfo, VerInfoSize);
 result := FormatFloat('000',v1)+'.'+FormatFloat('000',v2)+'.'+FormatFloat('000',v3)+'.'+FormatFloat('000',v4);
end;

 

 

Como comparar as versões da mesma aplicação, na estação e no servidor:

 

        if (GetBuildInfo(Estacao)<GetBuildInfo(Servidor))
         then begin

             (...)

        end; 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado (editado)

Legal , isso ja resolve meu problema . , pra vc ter uma base , to com EXEs em DELPHI e EXEs em Lazarus , e to convertendo aos poucos . mais como na parte de geracao de relatorios os

componentes pra delphi e melhor , ainda vou usar eles um bom tempo . mais ai posso ir quebrando eles e ir passando aos poucos .

 

Outra coisa Italo , nunca aconteceu por exemplo , de por algum problema da rede ou da maquina onde ficam os exes . a mesma nao conseguir se comunicar , e ai vc acabar

abrindo um exe anterior a versao correta ?

 

E se tiverem mais informacoes a complementar agradeço .

 

Obrigado a todos .

 

 

Adilson Pazzini .

Editado por adilsonpazzini
  • Consultores
Postado

Adilson,

 

Como você pode ver, existem varias soluções, umas mais simples, outras mais sofisticadas, basta agora, você escolher aquela que mais vai de encontro com o que deseja.

 

De uma forma ou de outra, a atualização, na minha opnião, tem que ser automatica.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Outra coisa Italo , nunca aconteceu por exemplo , de por algum problema da rede ou da maquina onde ficam os exes . a mesma nao conseguir se comunicar , e ai vc acabar

não atualizando e nao podendo fazer a verificação dos exes e abrir uma versão antiga  ? ou caso nao tenha a conexao . vc nem deixa abrir o exe ?

Postado

Aqui temos um conceito de "versão mínima"; se não der pra baixar (o sistema tenta 3 vezes) e a versão antiga for aceitável, deixa abrir.

Se a versão for antiga demais, não deixa o usuário sequer fazer login -- e ao fechar informa que é preciso atualizar a versão.

Colocamos um servidor apache em cada filial com uma cópia das versões atualizadas, assim o download fica na rede local.

Um arquivo INI em cada estação indica o IP do servidor onde deve logar no sistema e buscar as atualizações (pode ser o mesmo).

Alexsander da Rosa

Rednaxel Informática

http://rednaxel.com

  • Consultores
Postado

Boa tarde Adilson,

 

Caso a estação não consiga se logar na rede o programa "MENU" não roda, neste caso o usuário apesar de ter os executáveis na maquina, ele não acessa o sistema.

 

Tenho 2 servidores, um só para o banco de dados e outro para autenticar o usuário na rede e é neste que encontram-se as versões mais atuais dos executáveis.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado

Obrigado italo , sem querer se chato , mais sendo , rsrs , Referente a esse programa Menu , vc faz atualizações constantes nele , no caso quando for necessario fazer atualização pra esse MENU , vc faz um por um , ou tambem tem alguma atualizacão automatica pra ele ?

  • Consultores
Postado

Adilson,

 

Quando ocorre uma atualização no programa MENU, a sua atualização nas estações também são automaticas.

 

Você sabe que o Windows não deixa você atualizar um executável enquanto ele esta em execução.

Neste caso como é feita a atualização do MENU.

 

1. Ao executa-lo ele checa as versões dos módulos e dele mesmo.

2. Caso exista uma nova versão do Programa MENU é baixado e salvo em uma pasta temporaria.

3. Ao finalizar a execução, o mesmo se encarrega de se encarrega de copiar a nova versão que esta na pasta temporaria para a pasta de executaveis.

 

 

procedure TfrmPortal.FormClose(Sender: TObject; var Action: TCloseAction);

begin

 // Path_PrgU => contem o path da pasta temporaria

 // Path_PrgL => contem o path da pasta local dos executaveis

 Comando:='XCOPY '+Path_PrgU+'\*.exe '+Path_PrgL+' /D/V/C/Y';

 Winexec(PChar(Comando),SW_HIDE);

end;

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • 2 semanas depois ...
Postado

Ola pessoal,

tenho em andamento um Updater tbm, e no meu caso o mesmo deverá atualizar o banco juntamente com a versão do EXE.

A lógica é a seguinte:
tenho uma Thread que verifica a versão do exe(que fica armazenado no proprio exe) e no servidor FTP, caso exista uma versão = ele + 1 é informado ao usuário que há uma nova versão disponivel.

No sistema há um espaço para inicializar o download(onde é chamado o Updater.exe que é oque baixa, faz o backup e atualiza), porem, só é permitido o inicio da atualização, caso a primeira maquina a atualizar seja o servidor, pois preciso realizar uma cópia do banco antes de atualizar, pois poderei ter atualização no banco de acordo com cada versão.

No executavel que ja foi atualizado, tenho um script onde é verificado a versao do .exe se for <> da versao existente no .ini como mencionado veridfico se é o servidor, caso seja executo o script existente no executavel, onde é armazenado toda evolução do banco em uma função. Agora, caso a versao do exe seja <> da existente no ini mas no servidor a versao é igual a do exe entao nao executado o script e somente atulizo o exe...

 

Bom, espere que possa ser util, e que tenha sido claro quanto ao processo.

Até amis.

  • 2 semanas depois ...
Postado

Galera , queria abradecer a todos , pois consegui agora com as dicas do pessoal , criar um exe que se autoatualiza , so que agora fiquei com duvidas ref a parte da Pasta Schemas , so pra saber como vc´s fazer , vc´s criam a pasta schemas pra todos os terminais , ou fica centralizado num servidor mesmo e seta pro servidor a pasta schemas ?

 

 

Desde ja agradeço .

  • 2 anos depois...
  • Este tópico foi criado há 3295 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.