ATUALIZAÇÃO DE SISTEMA CLIENTE

RICARDOWEB084 02/10/2024 01:34:59
#503610
Alterado em 02/10/2024 06:57:31 Achei este artigo aqui mas não funcionou.

A ideia de fazer o upload do exe para o banco de dados seria excelente.

Pelo google drive seria ótimo também, mas parece ser impossível por causa da autenticação. Não acho mais um espaço na web em que eu consiga disponibilizar um link direto para download. Aí tenho que ficar entrando na máquina do cliente para fazer a atualização.


Alguém já tentou alguma solução parecida? Quais outras soluções vocês recomendam?
NETMANIA 07/10/2024 22:33:07
#503611
O canal seria você ter um serviço de hospedagem onde a sua aplicação verifique de tempos e tempo se tem alguma atualização e faça o download. Empresas maiores estão usando serviços como AWS e colocam os arquivos de download no S3 (que é uma área de armazenamento de arquivos) e de lá baixar o arquivo, só que o custo é mais alto e fora que você tem que gerenciar todo o ambiente.
RICARDOWEB084 08/10/2024 00:39:26
#503612
Veja, consegui uma rotina no VBForuns e deu certo.
Agora cada vez que eu tenho uma versão nova, eu subo para o banco de dados (Mysql) e cada vez que o cliente acessa o sistema, logo no início ele é encerrado, abre um outro aplicativo que baixa a versão nova do banco de dados e executa esta nova versão. O Cliente mal vê o que acontece.

Por enquanto está funcionando. Ainda estou em período de testes,
RICARDOWEB084 09/10/2024 23:34:04
#503613
Alterado em 09/10/2024 23:35:51 Por enquanto tudo funcionando bem. 6 máquinas atualizando o exe pelo banco de dados.
Em breve, visando otimizar meu sistema, vou substituir os módulos por ActiveX DLL, aí vou precisar subir estes arquivos também.
Comento aqui os resultados, mas recomendo a alternativa para quem busca uma solução para atualizações automáticas.

(https://www.vbforums.com/showthread.php?906853-VB6-Exe-Inside-MySql&p=5656797#post5656797)
user Zx81sp

CREATE TABLE IF NOT EXISTS `storage` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`file` longblob NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 DEFAULT CHARSET=latin1;

Code to store the exe in the DB:


Dim bytdata() As Byte
Dim rs As DAO.Recordset
Dim db As DAO.Database
Set db = OpenDatabase("", True, False, "odbc;DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;DATABASE=test;UID=root;PWD=;OPTION=16427;")
Open "c:    emp\myexe.exe" For Binary As #1
ReDim bytdata(LOF(1) - 1)
Get #1, , bytdata
Close #1
Set rs = db.OpenRecordset("storage", dbOpenDynaset)
rs.addnew
rs.Fields("file").AppendChunk bytdata
rs.Update
rs.Close
db.Close


Code to retrieve the latest exe stored in the db and save it to a file:

Dim rs As DAO.Recordset
Dim db As DAO.Database
Dim b() As Byte
Set db = OpenDatabase("", True, False, "odbc;DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;DATABASE=test;UID=root;PWD=;OPTION=16427;")
Set rs = db.OpenRecordset("Select top 1 file From storage order by id desc", dbOpenSnapshot)
ReDim b(Len(rs("file")))
b = rs("file")
Open "c:    emp\mynewexe.exe" For Binary As #10
Put #10, , b
Close 10
rs.Close
db.Close


Tested under Win10 and MariaDB 10.4, should be 100% compatible with MySQL.
OCELOT 11/10/2024 12:19:23
#503616
Tome cuidado com isso dai, se o banco de dados for local, na rede do seu cliente não deve ter muito problema, se for na internet tenha certeza de usar um usuário do banco de dados que tenha permissão apenas de leitura

Se você usar um usuário que pode ler e gravar basicamente você está dando um ponto de entrada pra alguém mal intencionado enviar um malware pra todos seus clientes.
RICARDOWEB084 13/10/2024 05:09:54
#503617

Citação:

Tome cuidado com isso dai, se o banco de dados for local, na rede do seu cliente não deve ter muito problema, se for na internet tenha certeza de usar um usuário do banco de dados que tenha permissão apenas de leituraSe você usar um usuário que pode ler e gravar basicamente você está dando um ponto de entrada pra alguém mal intencionado enviar um malware pra todos seus clientes.



Hoje eu utilizo o servidor UOL Mysql, mas ele não permite mais que um usuário por banco, então não posso deixar somente leitura senão eu mesmo não consigo incluir o arquivo nele.

Recomenda(m) algum outro servidor Mysql ?
RICARDOWEB084 13/10/2024 20:05:30
#503619
Eu achei esse https://try.kamatera.com/, não sei funciona bem, pareceu interessante.
Faça seu login para responder