Fórum Atualização do executável nos clientes #256218

27/10/2004

0

bom dia pessoal,
gostaria da ajuda de vcs no seguinte problema que estou enfrentando.
tenho um sistema desenvolvido que possui um instalador feito em inno setup.
esse sistema é instalado uma primeira vez no modo Servidor em um dos micros, e o restante dos micros em modo Cliente (que irão acessar o Servidor já instalado).
o meu setup funciona como atualizador também, como eu utilizo o Version Info do delphi para controlar as versões ele só irá sobrepor o executável caso a versão seja mais recente.
para o processo de atualização eu gostaria de baixar o novo executavel uma só vez no Servidor , sendo que os clientes fossem atualizados automaticamente. como fazer isso ?


abraço
Diogo.


Diogoalles

Diogoalles

Responder

Posts

27/10/2004

Jc_analista

Tente isso:

No create do form coloque isso:

// atualizando versão so sistema automaticamente
  DtLocal := FileDateToDateTime(FileAge(´c:\crm.exe´));
  DtRede := FileDateToDateTime(FileAge(´\\servidor\crm.exe´));
  If DtLocal < DtRede then
   begin
    Try
      WinExec(PCHAR(modulodados.caminho+´\Atualizador.exe´),         SW_SHOWNORMAL);
      Application.Terminate;
      Except
      Mensagem := ´Não foi possível efetuar a atualização disponível.! ´ +
       #13 + 13 + ´Entre em contato com o Administrador do Sistema.´;
      Application.MessageBox(PChar(Mensagem), ´Informação´,        MB_OK+MB_ICONINFORMATION);
    End;
   End; //Fim de procedimentos de Atualização




Crie outro executavel com o nome de atualizador e coloque na mesma pasta do seu sistema.

Código do atualizador:

 VsLocal := ´c:\crm.exe´;
  VsRede := ´\\servidor\crm.exe´;

  Try

    Mensagem := ´Foi detectada uma nova versão do CRM.´ +#13+ ´O sistema será atualizado. ´ + 13 + 13;
    Application.MessageBox(PChar(Mensagem),
      ´Pctel Crm´, MB_OK+MB_ICONEXCLAMATION);

    C := 1;
    While not (CopyFile(Pchar(VsRede),Pchar(VsLocal), False)) do
      Inc(C);

    //| Após copiar a versao local é executada.

    WinExec(PChar(VsLocal), SW_SHOWNORMAL);

  Except

     //| É exibida uma mensagem de erro caso algo saia errado.

    Mensagem := ´Erro Atualizar o Sistema! ´ + 13 + 13;
    Application.MessageBox(PChar(Mensagem), ´Erro´, MB_OK+MB_ICONERROR);
    Abort;
  End;

  //| A aplicação é finalizada

  Application.Terminate;




Utilizo nos meus sistemas e sempre funciona.


Responder

Gostei + 0

05/11/2004

Diogoalles

jc analista,
obrigado por sua ajuda... achei muito interessane.
fiquei com algumas duvidas como:
-o micro servidor vai tem que estar com a pasta onde tá o executável compartilhada?
-no caso do executável do atualizador, onde coloco a rotina que vc passou?

obrigado

Diogo


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar