Página 1 de 2
Veja como fazer uma rotina de atualização de sistema
Enviado: 12 Mar 2007 13:33
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
Atualização via internet
Enviado: 12 Mar 2007 13:53
por Netavin
Caros colegas!
... dizem que perguntar não ofende:
Funciona com qualquer tipo de conexão ??
Netavin
Enviado: 12 Mar 2007 14:52
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
Enviado: 12 Mar 2007 16:19
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
Re: Veja como fazer uma rotina de atualização de sistema
Enviado: 12 Mar 2007 16:25
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
Enviado: 12 Mar 2007 23:00
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
Enviado: 12 Mar 2007 23:09
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
Enviado: 13 Mar 2007 00:31
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
Enviado: 13 Mar 2007 08:41
por MARCELOG
Olá pessoal,
de onde vem ou o que é esse "U2F"?
MarceloG
Enviado: 13 Mar 2007 08:55
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

)
Enviado: 13 Mar 2007 08:55
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
atualizacao do EXE
Enviado: 13 Mar 2007 11:21
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
Enviado: 13 Mar 2007 11:35
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
Enviado: 13 Mar 2007 13:51
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
Enviado: 30 Nov 2007 18:14
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