Ideia p/Atualizacao Automatica de Sistema

Aqui é o lugar para bater papo e trocar idéias sobre os mais variados assuntos

Moderador: Moderadores

Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Ideia p/Atualizacao Automatica de Sistema

Mensagem 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
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Ideia p/Atualizacao Automatica de Sistema

Mensagem 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...
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ideia p/Atualizacao Automatica de Sistema

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Ideia p/Atualizacao Automatica de Sistema

Mensagem 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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Ideia p/Atualizacao Automatica de Sistema

Mensagem por fladimir »

Obrigado Quintas por compartilhar...
Sun Tzu há mais de três mil anos cita nas epígrafes de seu livro “A Arte da Guerra“:

“Concentre-se nos pontos fortes, reconheça as fraquezas, agarre as oportunidades e proteja-se contra as ameaças”.
“Se não é vantajoso, nunca envie suas tropas; se não lhe rende ganhos, nunca utilize seus homens; se não é uma situação perigosa, nunca lute uma batalha precipitada”
.


Até 2017    Desktop Console [ Legado ] Harbour | MinGW | DBF | CDX | FastReport | MySQL


Novos Projetos:

   Desktop Visual           Windev Desktop
   Celular Android/iOS   Windev Mobile
   WEB                            Windev Web


Sejamos gratos a Deus.
Responder