Página 1 de 1

Ideia p/Atualizacao Automatica de Sistema

Enviado: 24 Abr 2015 08:34
por fladimir
Pessoal, bom dia, antes demais nada sei e conheço os inúmeros tópicos q tem aki falando sobre este assunto, porém não consegui elaborar uma linha para desenvolvimento para o assunto.

O objetivo deste tópico em si não é a parte de funções para fazer o procedimento, mas sim discutirmos a(s) ideia(s) de como seria a melhor forma para fazê-lo.

As questões abaixo levantadas foram sintetizadas a partir dos vários tópicos q tem aki no fórum q abrangem o assunto...

1 - Como verificar se é pra proceder com a atualização ou não (MD5, TXT com informações pra serem comparadas, Data do EXE rodando e do q esta na Nuvem, outra?)

2 - Como proceder para baixar a atualização (FTP, HTTP, outra forma?)

3 - Como fazer com as estações q estão rodando?

3.1 - O sistema verifica q tem a atualização em uma pasta tipo UPDATE e mostra 1 alerta e derruba as estações?
3.1.1 - Se sim isso teria 1 série de questões a serem vistas, usuário lançando nota, cadastrando produto/cliente/etc, vendendo... e ai?

3.2 - O Sistema apaga o EXE e substitui pelo novo (desta forma as estações q estão rodando com o EXE carregado na memória não são afetadas) e a atualização se daria quando carregar novamente o sistema e ver q a data do EXE é mais atual q a ultima versão q foi executada.
3.2.1 - Isto eu já consegui até fazer, mas tem vezes q não permite excluir o EXE pois esta sendo executado, acho q isso é do SO.
3.2.2 - Neste caso vejo uma outra questão, suponhamos q consiga apagar o EXE com as estações rodando se alguma outra estação entrar novamente e o sistema verificar q é necessário proceder com a atualização mas ainda tem estações com a versão antiga como se daria? Aki vejo q uma possibilidade seria além de controlar a data do EXE para a atualização seria ter um controle de estações abertas com a versão antiga e não proceder enquanto não estiverem todas fechadas OU proceder com a atualização no início do outro dia.

4 - Mesmo com versão nova para atualização como fazer com q de nossa carteira de cliente somente o cliente Y seja atualizado?
4.1 - Ao meu ver as questões acima seriam para uma atualização em massa da carteira de clientes, porém pode haver casos q queiramos apenas q o cliente Y seja atualizado, alguém já pensou nisso? Como poderíamos fazer?

[]´s

Ideia p/Atualizacao Automatica de Sistema

Enviado: 04 Mai 2015 20:40
por fladimir

Vamos lá pessoal... sei q tem muita coisa boa nas mentes aki do fórum com relação a este assunto tb, por favor me auxiliem...

Ideia p/Atualizacao Automatica de Sistema

Enviado: 05 Mai 2015 14:28
por JoséQuintas
Eu faço isso desde os tempos do Clipper:

Fase 1: Instalar novo EXE

No computador tem o atalho para o BAT que executa o EXE.
START JPA.EXE
EXIT

Na rotina de atualização, consulto no MySql os dados do EXE (tamanho, data, versão, CRC32, etc)
Ao baixar verifico se o arquivo baixado coincide com essas informações.
Se tudo ok, renomeio para um nome fora de uso JPA2.EXE, JPA3.EXE, JPA4.EXE...
Por fim, altero o BAT para o novo EXE.
Isso permite atualizar, mesmo com o EXE em uso

Fase 2: O novo EXE

Ao executar o EXE, a primeira coisa é verificar se tem mudança de estruturas.
Se houver, a primeira coisa que o sistema faz é um backup.
O backup manda aviso pra todos os usuários serem expulsos do sistema.
Somente após o backup é que a versão prossegue.
O EXE bloqueia todos pra entrada até que todas as atualizações sejam feitas (estrutura e outros).
Ao final disso, o EXE libera entrada pra todos.
A atualização também já libera novas opções conforme empresa e usuário.

O bloqueio é simples: crio um arquivo na pasta com o nome AGUARDE.TXT
Enquanto existir esse arquivo, ninguém entra.
E em todos os menus faço checagem desse arquivo: se existir, o sistema fecha.
Como é nos menus, os usuários são expulsos sem risco de perder dados.
Lógico... De vez em quando acontece de ter que procurar quem está com o sistema aberto.

Usei esse método quando trabalhava com Clipper, quando misturei Clipper e VB6, quando troquei pra Harbour.
Ao atualizar, poderia acontecer de mudar de Clipper pra VB6, ou de Clipper pra Harbour.

Ultimamente, ao cliente atualizar, alguns arquivos deixam de existir em DBF e passam a ser no MySql.

Faz tanto tempo que uso assim, que até pensei que isso era algo comum.
Eu só vou alterando aqui e mandando pra internet.
Quando alguém atualizar, já usa última versão.

Ideia p/Atualizacao Automatica de Sistema

Enviado: 05 Mai 2015 14:40
por JoséQuintas
Ah sim... em rede.
Como por enquanto usa DBFs, é obrigatório ter a pasta compartilhada, então deixo o EXE no servidor.

Tem gente que acha que carregar o EXE pela rede é demorado, e coloca o EXE em cada estação.
Se pensar numa rede comum de 100MB, que significa uns 15MB por segundo, 7 usuários carregando um EXE de 2MB vão demorar 1 segundo pra carregar o EXE. Mas na prática os usuários não fazem isso ao mesmo tempo, então EXE no servidor não é problema.

Só depois que eliminar todos os DBFs do sistema vou pensar em uma nova opção disso, pra não ter mais que mapear pasta.

Ideia p/Atualizacao Automatica de Sistema

Enviado: 05 Mai 2015 15:28
por fladimir
Obrigado Quintas por compartilhar...