Página 1 de 1
Atualizando o EXE pelo MySQL
Enviado: 22 Mar 2022 12:34
por JoséQuintas
Estou entrando em uma nova fase.
Fiz o teste e deu certo: atualizar o EXE pegando do MySQL.
Tem a atualização de fora, que salva no MySQL.
Tem a atualização dos terminais, que vai pegar direto no MySQL.
Muito rápido, mesmo pela internet.
Como faz?
Ué... o SELECT de sempre... igual a ler qualquer coisa do MySQL.
Atualizando o EXE pelo MySQL
Enviado: 22 Mar 2022 16:48
por Itamar M. Lins Jr.
Olá!
Ué... o SELECT de sempre... igual a ler qualquer coisa do MySQL.
Queremos ver o código! Ainda mais que deve ser um campo BLOB ?
Saudações,
Itamar M. Lins Jr.
Atualizando o EXE pelo MySQL
Enviado: 22 Mar 2022 17:29
por JoséQuintas
NÃO.
Achei o BLOB complicado, poderia ter problema com codepage.
É um VARCHAR, limitado ao tamanho default da comunicação.
o EXE gravado em base64.
Portanto, uma string comum, só que grande.
Atualizando o EXE pelo MySQL
Enviado: 22 Mar 2022 17:34
por JoséQuintas
Por enquanto quebra-galho.
Código: Selecionar todos
IF AppVersaoSQLAnt() > AppVersaoSQL() .OR. AppVersaoExe() < cVersaoEXE
MsgExclamation( "Versão do JPA antiga." + hb_Eol() + ;
"Tentar localizar uma versão mais nova antes de continuar" )
WITH OBJECT cnSQL
:cSQL := "SELECT * FROM JPBINARY WHERE BINNAME='JPA.EXE'"
:Execute()
IF ! :Eof()
cFileVer := :String( "BINVERSAO" )
cFileTxt := :String( "BINVALUE" )
cFileCrc := :String( "BINCRC32" )
ENDIF
:CloseRecordset()
IF cFileTxt == Nil
MsgStop( "ERRO: não encontrado EXE na base de dados" )
QUIT
ENDIF
IF hb_NumToHex( hb_Crc32( cFileTxt ) ) != cFileCrc
MsgStop( "ERRO: Falha na leitura do EXE da base de dados" )
QUIT
ENDIF
IF ! cFileVer == Nil .AND. cFileVer < AppVersaoExe()
MsgStop( "versão da base de dados mais antiga que atual" + hb_Eol() + ;
"Contacte a JPA" )
QUIT
ENDIF
cFileTxt := hb_Base64Decode( cFileTxt )
FOR nCont = 2 TO 99
cFileName := "JPA" + Ltrim( Str( nCont ) ) + ".EXE"
IF ! File( cFileName )
hb_MemoWrit( cFileName, cFileTxt )
EXIT
ENDIF
NEXT
ENDWITH
MsgExclamation( "Tente carregar o JPA novamente" )
QUIT
ENDIF
Atualizando o EXE pelo MySQL
Enviado: 22 Mar 2022 17:38
por JoséQuintas
Meu esquema atual de carregar o EXE já faz o resto, carregando a versão mais nova.
A atualização só precisa gravar o EXE com um nome que não existe.
Atualizando o EXE pelo MySQL
Enviado: 01 Abr 2022 14:53
por JoséQuintas
Utilizei essa atualização pra algo mais.
NÃO tenho mais acesso externo na empresa pra atualizar o EXE.
Mas.... tenho acesso ao MySQL.
Carreguei o EXE NA MINHA MÁQUINA.
Pedi atualização, onde o aplicativo salva o EXE no MySQL.
Ao carregarem na empresa, o EXE se atualizou pelo MySQL.
Muito legal isso, apesar de perigoso, porque se algo der errado.... vou precisar do suporte.
Mas pelo menos, se eu usar EXE mais novo antes de atualizar na empresa, consigo atualizar.
Isso também resolve a atualização de uso remoto.
Então... tem a atualização pelo EXE, que baixa do Site/FTP....
E caso eu apronte, entre com mais nova antes deles atualizarem, ele se atualiza pelo MySQL.
E para usuários fora da empresa, a atualização pelo MySQL também resolve.
Atualizando o EXE pelo MySQL
Enviado: 04 Abr 2022 10:10
por JoséQuintas
Traduzindo melhor:
Minha atualização tradicional baixa do site e instala.
A partir de determinado momento, também salvei o EXE no MySQL, durante essa atualização.
Acrescentei uma atualização diretamente do MySQL, para quando o EXE não corresponde ao necessário.
Imprevisto:
Se eu utilizo diretamente da minha máquina, o EXE pode fazer atualizações no MySQL, e alterar o número de versão.
Nesse caso, ninguém mais consegue entrar, só eu na minha máquina, porque a versão gravada no MySQL continua anterior.
Mas... se eu entrar pela minha máquina e fizer a atualização tradicional, aí as outras máquinas podem puxar do MySQL.
Ainda imprevisto:
Se eu apenas atualizar da minha máquina, vai ser puxada a versão da internet, que pode não corresponder à atual que usei na minha máquina.
Solução:
Primeiro enviar a versão da minha máquina pra internet, como sempre foi.
Entrando pela minha máquina e atualizando, vai pegar a versão correta da internet, e gravar no MySQL.
Acho que vou precisar alguma alternativa de acesso remoto, pra emergências.
Atualizando o EXE pelo MySQL
Enviado: 04 Abr 2022 10:21
por JoséQuintas
Ainda nisso:
Posso querer atualizar essa rotina de atualização.
Qualquer falha nisso... já era...
Só poder atualizar se o EXE estiver funcionando é um risco.