Atualização do executável nos clientes
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.
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
Curtidas 0
Respostas
Jc_analista
27/10/2004
Tente isso:
Crie outro executavel com o nome de atualizador e coloque na mesma pasta do seu sistema.
Código do atualizador:
Utilizo nos meus sistemas e sempre funciona.
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.
GOSTEI 0
Diogoalles
27/10/2004
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
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
GOSTEI 0