Clipper On Line • Ver Tópico - Atualização automática

Atualização automática

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

Moderador: Moderadores

 

Atualização automática

Mensagempor JoséQuintas » 23 Out 2019 11:39

Hoje atualizo meu aplicativo, mas é de uso em rede local.
Como o EXE vém do servidor, ao atualizar o EXE todos ficam atualizados.
Uma solução pra remoto foi usar hbnetio pra esconder os dados.
Até aí... tudo bem, tudo funcionando... mas.....

Quando estiver tudo em MySQL, deixa de existir a necessidade do servidor, ou a pasta do servidor.
E principalmente o remoto vai poder ser direto pelo aplicativo.

Aí surge uma nova questão:
Cada máquina vai passar a ter seu próprio EXE.
Cada máquina vai precisar atualizar seu próprio EXE.
A origem do EXE precisa estar acessível, seja por internet ou por rede local ou por outro modo.

Por enquanto, vejo como possibilidade usar o próprio MySQL.
O MySQL vai estar acessível por todos os terminais, locais ou remoto.
O MySQL permite gravar o EXE numa tabela.

Por enquanto ainda uso DBF, e obrigatoriamente precisa de uma pasta.
E por enquanto o terminal server resolve.
Apenas já estou começando a pensar em necessidade futura, que poderia ou não usar desde já...

Alguém já fez alguma coisa nesse sentido?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Atualização automática

Mensagempor janio » 23 Out 2019 12:11

Bom, eu tbm uso MySql e faço o seguinte:

1 - Compartilho a pasta do sistema no servidor como SOMENTE LEITURA
2 - Nas estações chamo o sistema através de um .bat e crio o atalho para esse .bat (e não para o .exe)

@ECHO OFF
xcopy \\servidor\criasoftware\sistema.exe /r /y /d C:\criasoftware
START C:\criasoftware\sistema.exe

3 - Antes do .exe ser acionado, o bat verifica se o executavel do servidor tem data mais atual da que está na estação. Tendo, copia pra estação
4 - Dessa forma atualizo apenas o servidor e as estações se auto-atualização
5 - Quando ha uma atualização importante e que nenhuma estação pode continuar usando a versão antiga, eu tenho uma tabela que informo o numero da versão mais atualizada. Quando cada exe entra ele verifica se está usando a ultima. Se por algum motivo a estação não conseguiu copiar o a atualização, ao entrar no sistema eh emitido um aviso que HA VERSÃO MAIS NOVA e dali ele nao passa

6 - Tem funcionado bem em rede com até 20 estações (q eh minha experiência)
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Atualização automática

Mensagempor JoséQuintas » 24 Out 2019 09:30

Os BATs não são bem aceitos do Windows 8 pra cima.
Pode ser interessante trocar o BAT por um EXE, e chamar o programa por ShellApi, pro intermediário não ocupar memória extra.
E com o EXE, vai poder usar mais recursos pra atualização.

No final a atualização vai precisar de duas partes/duas variações.

- A atualização da empresa
- A atualização dos terminais

E também algum tipo de bloqueio, pra não tentarem usar programa de versão velha em arquivos atualizados.

Pior....
As atualizações automáticas que faço...
Isso daria o poder de alguém de fora da empresa fazer atualizações, o que não é bom.
Vai precisar um bloqueio/limitação de qual máquina pode fazer atualização, ou de qual usuário.

Talvez também um cadastro de máquinas, pra definir quais máquinas podem acessar.

Estou considerando que, usando MySQL, o terminal pode estar fora da empresa, em qualquer notebook de qualquer pessoa.

É... novos recursos, novas necessidades pra segurança...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Atualização automática

Mensagempor Itamar M. Lins Jr. » 24 Out 2019 09:54

Ola!
Via TCP vc pode atualizar as maquinas que acessam o sistema. NetIO faz isso e o Letodb[f] também tem isso pronto.
Só estudar as rotinas de TCP(sockets) do Harbour.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

Atualização automática

Mensagempor JoséQuintas » 28 Out 2019 18:36

Só voltando ao assunto.
Não é sobre baixar EXE, é sobre todo conjunto.

Por exemplo....
Agora pensando numa próxima necessidade:
Chamar o aplicativo em 32 ou 64 bits, conforme a máquina cliente.

Como faço backup pelo Harbour, incluindo do MySQL e ZIP.... em breve 4GB não vai ser suficiente.
Nesse caso, só tendo versões 32/64 bits pra carregar conforme terminal.
Acho que meu SJPA.EXE vai servir pra isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Atualização automática

Mensagempor Fernando queiroz » 04 Nov 2019 20:56

Parti da ideia de vocês e já fiz funcionar a atualização via LETODBF
do executável mais novo.

#include "Directry.ch"
#include "rddleto.ch"
#include "hwgui.ch"

REQUEST LETO
REQUEST HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850
****************************************
FUNCTION MAIN( IpdaRede )
****************************************

LOCAL oExeList;
   , cCaminho;
   , cParam:=IpdaRede;
   , icone:=HIcon():Addresource('SGC_ICON') ;
   , cPathEXE:="//IPDOSERVIDORLETO:2812/";
   , oExeLETO

   Set( _SET_CODEPAGE, "PTISO" )
   SET DATE BRITISH
   SET EPOCH TO Year( Date() ) - 90

   cCaminho:= hb_FNameDir( hb_ProgName() )
   oExeList:=HB_Directory(cCaminho + "SGC*.EXE")
   ASort( oExeList, , , { | a, b | Dtos( a[ F_DATE ] ) + a[ F_TIME ] > Dtos( b[ F_DATE ] ) + b[ F_TIME ] } )
   IF ( leto_Connect( cPathEXE ) ) < 0
      hwg_MsgInfo( "Erro Conectando ao Servidor de FTP: " + cPathEXE + leto_Connect_Err( .T. ), "Verifique!!!")
      quit
   ENDIF

   IF Len( oExeList ) < 1
      oExeLETO:=LETO_Directory("SGC/SGC*.EXE")
      ASort( oExeLETO, , , { | a, b | Dtos( a[ F_DATE ] ) + a[ F_TIME ] > Dtos( b[ F_DATE ] ) + b[ F_TIME ] } )
//      hwg_MsgInfo( cPathEXE+"SGC/"+oExeLETO[ 1, F_NAME ] + " --> " + cCaminho+oExeLETO[ 1, F_NAME ] )
      Leto_FCopyFromSrv( cCaminho+oExeLETO[ 1, F_NAME ], cPathEXE+"SGC/"+oExeLETO[ 1, F_NAME ] )
   
   ELSE
      oExeLETO:=LETO_Directory(cPathEXE+"SGC/SGC*.EXE")
      ASort( oExeLETO, , , { | a, b | Dtos( a[ F_DATE ] ) + a[ F_TIME ] > Dtos( b[ F_DATE ] ) + b[ F_TIME ] } )
   
      IF Upper( oExeLETO[ 1, F_NAME ] ) != Upper( oExeList[ 1, F_NAME ] )
         Leto_FCopyFromSrv( cCaminho+oExeLETO[ 1, F_NAME ], cPathEXE+"SGC/"+oExeLETO[ 1, F_NAME ] )
      ENDIF   
   
   ENDIF
   
   oExeList:=HB_Directory(cCaminho + "SGC*.EXE")   
   ASort( oExeList, , , { | a, b | Dtos( a[ F_DATE ] ) + a[ F_TIME ] > Dtos( b[ F_DATE ] ) + b[ F_TIME ] } )
   WAPI_ShellExecute( NIL, "open", cCaminho + oExeList[ 1, F_NAME ], cParam, hb_cwd(), SW_SHOWNORMAL )
   
RETURN NIL
   
************************************************
STATIC FUNCTION hwg_Exclamation( cText )
************************************************
   RETURN wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atenção", MB_ICONASTERISK )   


TESTADO E APROVADO, dicas do Prof. Quintas
tenho dois EXE o SSGC.EXE mostrado acima verifica se tem oSGC*.EXE mais novo e executa, se não tiver ele baixa do meu servidor a ultima versão
e executa a mais nova. muito rapido

:)) :)) :)) :))
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Atualização automática

Mensagempor JoséQuintas » 04 Nov 2019 21:22

Quando saiu o Windows 8, ele não se dava bem com BATs nos atalhos.
Foi quando surgiu a idéia de usar um EXE desse jeito, escolhendo o mais novo da pasta.

Vai aparecendo a necessidade, a gente vai fazendo....
Talvez muitos tenham ficado no Windows 7 e não perceberam isso.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18014
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Atualização automática

Mensagempor Fernando queiroz » 04 Nov 2019 21:47

e para complementar a coisa criei um EXE chamado TSGC.EXE para fazer a transferência do meu LAPTOP para o servidor

#include "Directry.ch"
#include "rddleto.ch"
#include "hwgui.ch"

REQUEST LETO
REQUEST HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850
****************************************
FUNCTION MAIN( TIPOCONEC )
****************************************

LOCAL oExeList;
   , cCaminho;
   , icone:=HIcon():Addresource('SGC_ICON') ;
   , cPathEXE;

   Set( _SET_CODEPAGE, "PTISO" )
   SET DATE BRITISH
   SET EPOCH TO Year( Date() ) - 90
   
   IF EMPTY(TIPOCONEC)
      cPathEXE:="//192.168.15.200:2812/"
   ELSE
      cPathEXE:="//IPR.EMO.TO.OO:2812/"
   ENDIF

   cCaminho:= hb_FNameDir( hb_ProgName() )
   oExeList:=HB_Directory(cCaminho + "SGC*.EXE")
   ASort( oExeList, , , { | a, b | Dtos( a[ F_DATE ] ) + a[ F_TIME ] > Dtos( b[ F_DATE ] ) + b[ F_TIME ] } )
   IF ( leto_Connect( cPathEXE ) ) < 0
      hwg_MsgInfo( "Erro Conectando ao Servidor de FTP: " + cPathEXE + leto_Connect_Err( .T. ), "Verifique!!!")
      quit
   ENDIF
   IF hwg_MsgYesNo( "Deseja Transferir o Arquivo:"+ HB_EOL()+"De: "+cCaminho+oExeList[ 1, F_NAME ]+ HB_EOL()+"Para: "+ HB_EOL()+cPathEXE+"SGC/"+oExeList[ 1, F_NAME ] ,"Transferir para FTP" )
      Leto_FCopyToSrv( cCaminho+oExeList[ 1, F_NAME ], cPathEXE+"SGC/"+oExeList[ 1, F_NAME ] )
   ENDIF
RETURN NIL
   
************************************************
STATIC FUNCTION hwg_Exclamation( cText )
************************************************
   RETURN wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atenção", MB_ICONASTERISK )   


Com esse eu transfiro pro meu servidor as atualizações sem precisar estar perto , com isso posso viajar e atualizar o danado remotamente
:* :* :*
HARBOUR 3.2, HWGUI 2.23 B3, SEFAZCLASS, PDFClass, ADO + MariaDB/MySQL, RMChart
Fernando queiroz
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 737
Data de registro: 12 Nov 2014 23:41
Cidade/Estado: Porto Alegre/RS
Curtiu: 12 vezes
Mens.Curtidas: 58 vezes

Atualização automática

Mensagempor Nascimento » 27 Nov 2019 12:06

achei muito legal estou estudando este exemplo
mais uma duvida como faria para fechar o aplicativo anterior e abrir ja o novo "atualizado"?
A arte de programar é simplesmente fazer seus pensamentos serem interpretados por uma maquina :) clipper 5.3 /harbour/minigui
Avatar de usuário

Nascimento
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 711
Data de registro: 19 Jul 2008 12:11
Cidade/Estado: OLINDA-PE
Curtiu: 110 vezes
Mens.Curtidas: 76 vezes




Retornar para Bate Papo

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 7 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro