Então... vamos lá...
Na minha máquina criei a pasta com resources que vão para o MySQL
São tabelas em formato JSON, criação de tabelas em formato de comando SQL, comandos pra criação de STORED PROCEDURE e STORED FUNCTION.
E outros comandos SQL que sejam muito grandes.
Quando peço pra enviar versão pra internet, esses arquivos são atualizados no meu servidor da internet, apenas a tabela WEBBINARY, e isso fica lá, quietinho, apenas salvo na internet.
Nos clientes:
Quando clicam lá pra atualizar versão, uma das coisas é o aplicativo atualizar o JPBINARY local, que contém uma cópia do WEBBINARY.
Se forem STORED PROCEDUREs ou STORED FUNCTIONs, o aplicativo já executa o comando no servidor LOCAL, servidor do CLIENTE.
Resultado: todas as rotinas/comandos SQL são atualizados automaticamente, SEM PRECISAR outro EXE.
Basta eu criar tabelas em json aqui na máquina, e elas chegam ao cliente, também por esse JPBINARY.
O mesmo pode acontecer com imagens, EXEs, DLLs, etc. tudo é enviado automaticamente para os clientes.
Com isso, qualquer atualização chega até o cliente, automaticamente.
Só a instalação de tudo, por enquanto não deixei automática, só mesmo STORED PROCEDURE/FUNCTION.
Simples e prático:
- envio pra minha base SQL da internet o que tiver data mais nova
- no cliente, baixo o que tiver data mais nova, e instalo se for STORED PROCEDURE/FUNCTION
Por enquanto não faço a remoção auomática.
Se alguma coisa deixou de ser usada, ela continua lá.
Ainda pensando na remoção, porque remover antes da hora, ou remover tudo por problema de conexão não seria bom.
Talvez seja interessante colocar um indicativo sobre estar desativado, ou sobre qual versão precisa daquilo.
versão de/até, por exemplo.
Acho que nem precisa dizer, mas, deixei de fora as tabelas de configuração, e a própria tabela BINARY.
Sim, porque essas o aplicativo precisa criar sem depender de BINARY.
Como vou salvar coisas no BINARY se o BINARY não existir?
Também no primeiro uso, a primeira coisa é atualizar esse BINARY, a fim de ter os comandos pra prosseguir.
Pronto.
Toda atualização do aplicativo está automática, no que se refere a levar as informações até a máquina do cliente.
A partir daí, é tudo local, sem mais necessidade da internet.
Dá pra dizer que é como o aplicativo ter um pendrive próprio, só com instalações.
Pois é...
A idéia inicial era apenas reduzir o tamanho do EXE, movendo resource pra MySQL.
E no final... criei isso de transferir arquivos de atualização/instalação.