Atualizando o EXE pelo MySQL

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

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

Atualizando o EXE pelo MySQL

Mensagem 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.
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Atualizando o EXE pelo MySQL

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Atualizando o EXE pelo MySQL

Mensagem 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.
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

Atualizando o EXE pelo MySQL

Mensagem 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
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

Atualizando o EXE pelo MySQL

Mensagem 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.
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

Atualizando o EXE pelo MySQL

Mensagem 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.
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

Atualizando o EXE pelo MySQL

Mensagem 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.
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

Atualizando o EXE pelo MySQL

Mensagem 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.
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/
Responder