Veja como fazer uma rotina de atualização de sistema

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Veja como fazer uma rotina de atualização de sistema

Mensagem por Clipper »

Prezados Colegas

No final de semana eu, o Pablo e o Maligo, conversamos bastante sobre como fazer para detectar se o computador está conectado a internet, descobrimos várias maneiras e isso acabou resultando em uma nova opção que é de fazer atualização automática do sistema, bastando para isso que o computador esteja conectado a internet.

Se quiserem ver o tópico completo que gerou essa idéia :
https://pctoledo.org/forum/viewtopic.php?t=5452

Separei pois talvez alguns dos colegas acabesse perdendo por não entrar no outro tópico.

Segue abaixo um rotina de exemplo funcionando :

Código: Selecionar todos

*------------------*
// Marcelo Mendes //
*------------------*
// Funcao para verificar e baixar atualizacao de um sistema
CLS
VERSAOATUAL="4.71" // Aqui fica o numero da versao atual
*** Neste caso o arquivo que contem a versao deve ter os seu primeiros
*** 4 bytes com o numero da versao disponivel
*** Cada um vai colocar da forma que usa
*** Mas terá que alterar o FREADSTR() para o tamanho usado

FERASE("update.txt")
FERASE("BRUPDATE.EXE")
COMANDO="U2F http:\\sistemabr.v10.com.br/info.upd update.txt"
RUN &COMANDO
IF FILE("update.txt")=.F.
   @ 02,00 SAY "Sem conexao ou arquivo nao encontrado no servidor !"
   INKEY(3)
   RETURN(.T.)
ELSE
   HAND=FOPEN("update.txt")
   VERSAODISP=FREADSTR(HAND,4) // Le os 4 primeiros bytes do aquivo baixado
   FCLOSE(HAND)
   IF VERSAOATUAL<VERSAODISP
      @ 02,00 SAY "Atualizacao disponivel "+VERSAODISP+", pressione uma tecla..."
      INKEY(10)
      EDITA=MEMOREAD("update.txt")
      CLS
      @ 00,00 SAY PADC("Novidades da versao "+VERSAODISP,80)
      @ 24,00 SAY PADC("Tecle <ESC> para sair",80)
      MEMOEDIT(EDITA,01,00,23,79)
      CLS
      BAIXAR=SPACE(1)
      @ 02,00 SAY "Deseja baixar e executar a atualizacao ?";
      GET BAIXAR PICT "@! A" VALID BAIXAR $"SN"
      READ
      IF BAIXAR="S"
         COMANDO="U2F http:\\www.phrep.com.br/brupdate.exe brupdate.exe"
         RUN &COMANDO
         RUN BRUPDATE.EXE
      ELSE
         CLS
         RETURN
      ENDIF
   ELSE
      @ 02,00 SAY "Nenhuma atualizacao disponivel !"
      INKEY(3)
      RETURN(.T.)
   ENDIF
ENDIF
Baixem no link abaixo :

www.phrep.com.br/update.zip

Já está com o executável e funcionando, podem testar a vontade.

O próximo passo é uma idéia do Maligno :
Maligno escreveu:Uma extensão natural da sua função é a criação de um tipo de WebService para atualização de licença de uso. Uma excelente forma de proteção de programa. Basta que o programador tenha um site onde hospedar os arquivos de controle.
Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Netavin
Usuário Nível 3
Usuário Nível 3
Mensagens: 306
Registrado em: 28 Fev 2007 08:37
Localização: Cacoal-RO

Atualização via internet

Mensagem por Netavin »

Caros colegas!
... dizem que perguntar não ofende:
Funciona com qualquer tipo de conexão ??

Netavin
TK90 / TK95 / APPLE IIe / 286 / 386 / 486 / 586 / AMD Atlhon
" Sem saber que era impossível, foi lá e fez !! "
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Tô ofendido... :))

Sim, funciona com qualquer conexão, é óbvio que numa conexão discada vai demorar dependendo do tamanho do arquivo de atualização.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Clipper escreveu:Sim, funciona com qualquer conexão, é óbvio que numa conexão discada vai demorar dependendo do tamanho do arquivo de atualização.
Seria bom poder acompanhar/monitorar as transferências mais demoradas. Não liberei a função nova do WAPI justamente por isso. Fui tentar elaborar uma solução para esse problema. Quando a função de checagem de conexão não encontra conexão alguma há boa demora considerável para o retorno. Isso é muito chato. Descobri uma forma de montar um função de callback pra monitorar as tranferências de arquivos. Mas ainda não pude testar totalmente. À noite talvez tenha uma resposta definitiva.
Não estou querendo dizer que será possível montar uma barra de progresso de transferências. Se eu já tivesse o WAPI residente *acho* que até seria possível. Mas por enquanto não.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Veja como fazer uma rotina de atualização de sistema

Mensagem por Maligno »

Clipper escreveu:O próximo passo é uma idéia do Maligno
Sem querer ser chato, mas já sendo,... :)
Uma boa idéia para um próximo passo, além do controle de licenciamento, que é bem mais fácil, seria montar uma espécie de protocolo de atualização de sistema que "sinta" a necessidade de alterações de estruturas de bancos de dados. Sua função, apesar de não ter testado ainda, me parece boa no que dispõe a fazer: baixar arquivos de atualização. Mas falta contemplar essa atualização de dados que, em muitos casos, é absolutamente imprescindível.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Não sei se é exatamente o que você quer dizer, mas no que diz respeito as atualizações das estruturas o meu próprio programa se encarrega disso, não é exatamente "a fórmula", mas sempre funcionou com meus clientes, veja como faço :

No arquivo de atualização vão :

O novo executável
Os arquivos de dados (vazios) que as estruturas foram alteradas.
Digamos :

BR.EXE
PRODUTOS.ATU
MOVVEN.ATU
CLIENTES.ATU

Quando meu sistema inicia ele verifica a existência de arquivos com extensão ATU, se existir ele abre o arquivo .ATU e faz um APPEND FROM do respectivo DBF, depois exclui o DBF original e renomeia o .ATU para .DBF, após isso recria os indices e entra no sistema normalmente.

Eu nunca tive nenhum problema até hoje com essa solução, sei que ela não é a mais profisional, mas tem funcionado muitissimo bem.

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Show de bola !. Que bom que o outro tópico insentivou a criação de uma nova rotina, que será muito útil, fica a disposição do cliente e fica mais prático para todos nós.

Agora com respeito a idéia do MALIGNO em fazer a revisão da base de dados. Claro que é ensencial, muito importante. Mas eu acho que para cada atualização, teria que ter um arquivo onde contivesse a nome e estrutura de TODOS os BD. E essa comparação e acerto fazer LOCAL, após o DOWNLOAD. Acho que poderia ser um DBF que para cada registro iria compor pelo NOME_ARQUIVO, NOME_CAMPO, TIPO_CAMPO, TAMANHO_CAMPO. Podendo criar ou alterar o arquivo: DBF, MEM, TXT.

Toda idéia, pode ser melhora. E isto surgiu na boa vontade. Será bem vindo qualquer opinião, não é MARCELO ?

Um clip-abraço :)Pos
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Ess questão de atualização de bancos de dados gera um assunto bem extenso. Até é possível montar um protocolo que contemple todas as possibilidades de atualizações. Isso inclui não apenas cópia de um banco para outro. Há ocasiões, e muita gente deve ter passado por isso, que o dado antigo precisa ser trabalhado antes de povoar o arquivo novo. É dessa flexibilidade que estou falando.
Quanto à comparação de arquivos em si, acho muito mais prático trabalhar com CRC32. É um simples número de 8 dígitos. Muito mais fácil e simples de trabalhar do que analisar estruturas campo por campo.

Tenho na minha página um utilitário que fiz para facilitar o uso desse recurso em linha de comando. Além de calcular o CRC32 de arquivos e strings, ele também calcula o de estruturas DBF. Inclusive, a saída pode ser direcionada para um arquivo texto. Executar sem qualquer argumento faz aparecer o help.
Link: http://buzinello.com/download/crc32.exe

[]'s
Maligno
http://www.buzinello.com/prg
MARCELOG
Usuário Nível 4
Usuário Nível 4
Mensagens: 546
Registrado em: 15 Mar 2005 16:54
Localização: Divinópolis/MG

Mensagem por MARCELOG »

Olá pessoal,
de onde vem ou o que é esse "U2F"?

MarceloG
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Maligno escreveu:Há ocasiões, e muita gente deve ter passado por isso, que o dado antigo precisa ser trabalhado antes de povoar o arquivo novo.
Entendo. Mas de qualquer forma, eu não faria uma conversção ou importação de dados ONLINE. Achou isso muito arriscado e demorado, claro que pode ser feito (e deve) uma cópia do banco de dados. Mas tudo isso iria fazer localmente, é mais rápido e mais seguro.
Maligno escreveu:Quanto à comparação de arquivos em si, acho muito mais prático trabalhar com CRC32. É um simples número de 8 dígitos. Muito mais fácil e simples de trabalhar do que analisar estruturas campo por campo.
LEGAL !. Legal ter você como colega aqui no FORUM (sem tirar méritos a MUITOS que são também LEGAIS, por favor) você sempre exige muito de nós e traz muita qualidade. Eu não sou formado em informática, mas eu ja tinha pensado algo assim e não sabia como. Agora percebo quanto é importante conhecer conceitos e metodologias das quais devemos avaliar.

Gente, até parece que sou um puxa saco do MALIGNO, mas reconheçamos que o colega até disponibiliza o código fonte no seu site. Isto porque não é mesquinho e gosta de ajudar. O seu pseudonimo, não deveria ser MALIGNO. E os eleogios fazem bem a qualquer um.

No entanto, quando tenho tenho que fazer críticas não dispenso comentários. Aqui me sinto a vontade e não morro de amores por ninguém. Mas que a verdade seja dita. Não acham ?

Um clip-abraço :{ :xau :)Pos :))
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Marcelo

O U2F (url to file) é um programinha que serve para fazer download de páginas e arquivos utilizando o protocolo http, você pode baixar todo tipo de arquivo com ele, ele é usado no prompt de comando.

Exemplo :

u2f http:\\www.google.com.br/index.html google.txt
Ele vai baixar o index.html do site do googlr.br e enviar para google.txt no seu computador.

Se quiser ver um exemplo mais completo :

http://www.phrep.com.br/update.zip

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
paiva
Usuário Nível 3
Usuário Nível 3
Mensagens: 300
Registrado em: 04 Ago 2005 10:28

atualizacao do EXE

Mensagem por paiva »

BOM dia

por favor como atualizar um exe no win 2000 2003 se ele estiver sendo usado ?


no 98 eu copiava pra cima dele e manda-va depois o pessoal sair e entrar denovo.

no W2000 ele NAo permite copiar pra cima de um exe que estege sendo usado ai dificulta as atualizaçoes


tem GEITO ?

desde ja agradeço

PAiva
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Acho que em todas as versões do WINDOWS, o recomendável seria para que todos saissem do aplicativo. Lembre, você está fazendo um UPGRADE do sistema. Dependendo a estutura de como é formado o seu sistema, até daria para fazer, mas não seria conveniente quando está sendo executado. É dizer, no meu sistema por exemplo, tenho um arquivo .BAT que gerencia através de ERRORLEVELs após ter passado pelo menu principal do sistema. E nesse arquivo em lote, chama predeterminado executável, conforme a opção requirida pelo menu. Isto é, o meu sistema tem dezenas de executáveis gerenciados pelo um arquivo BAT (eu chamo de sistema modular). Daí é muito conveniente para atualização sobre o executável, porque não sempre é executado numa rede ao tempo que poderia ser liberado o arquivo EXE para ser atualizado. Só que também seria inconveniente, quando há mudanças de estrutura no BD.

Um clip-abraço :)Pos
Avatar do usuário
Clipper
Colaborador
Colaborador
Mensagens: 1334
Registrado em: 23 Ago 2004 00:04
Localização: Recife/PE

Mensagem por Clipper »

Prezado Paiva

Eu uso um executavel para cada estação, isso me permite atualizar sem precisar parar as outras estações, a desvantagem é que eu tenho que lembrar de fazer em todas.

Você pode usar um BAT, esse BAT é o que chama seu programa, porém ele verifica antes se tem uma atualização, exemplo :

IF NOT EXIST SISATUA.EXE GOTO FIM
DEL SISTEMA.EXE
REN SISTATUA.EXE SISTEMA.EXE
:FIM
SISTEMA

Até logo.

Marcelo
Programador que é programador, quando tá de folga vai inventar função nova, fazer testes, ou seja... se divertir
Cobra 210 - Drive de 8" 1.024 KB - 64 KB RAM - Impressora de Linha Cobra - Visicalc - Fortran - Dialog - Sistema Operacional SP/M (é sp/m mesmo - era o cp/m da cobra)
Avatar do usuário
fladimir
Colaborador
Colaborador
Mensagens: 2445
Registrado em: 15 Nov 2006 20:21

Mensagem por fladimir »

Colegas seguinte... realmente o trem funciona blzinha mas o meu Antivírus (Antivir) fica acusando o U2F como um Trojan...... teria como resolver isso... digo pois tipo os clientes vão ficar com a pulga atras da orelha achando q eh algum problema....

Grato


:xau
Responder