RESOLVIDO: Ajuda para desenvolver um atualizador para meu sistema Java

Galera, desenvolvi um sistema em Java desktop (Swing) que está rodando atualmente em no mínimo 30 máquinas (clientes), todas na rede local, constantemente estou fazendo melhorias na minha aplicação e todas as vezes que gero uma nova versão tenho que ir de máquina em máquina com o novo “.jar” num pendrive para substituir a versão antiga.

O que preciso fazer:

  1. Colocar o “.jar” atualizado numa máquina da rede que uso atualmente como servidor;

  2. Informar a nova versão ou no BD ou num xml por exemplo nesta máquina que é o servidor;

  3. Quando as máquinas clientes abrirem o sistema ele consulta a versão do “.jar” em execução e verifica que existe uma nova versão disponível (através da leitura do xml ou do BD no servidor) e informa o usuário que será atualizado;

  4. Neste momento ele fecha o “.jar” em execução, faz o download do “.jar” novo e substitui o “.jar” na máquina do cliente.

  5. Reinicia o sistema já com o “.jar” atualizado.

    Exemplo

Acredito que não servirá só para mim, milhares de usuários serão gratos com esta ajuda, por favor, me ajudem a desenvolvermos juntos.

Obs.: Localizei algumas coisas na Net mas tudo relacionado a Java Web, preciso desenvolver para Java Desktop.

Pode usar Java Web Start na sua rede local.

web start nao funciona com o layout absoluto, outra opção é usar o serviço de FTP, clica no button q redireciona lá pro link e salva no pc…

O que teria haver Java Web Start com layout?

Então, eu também não sei… Mesmo com a biblioteca lá, o programa não abre, diz que tá faltando o driver do layout

Deve estar faltando referenciar algum jar.

1 curtida

Pior que não, tava tudo certinho

Add @ViniGodoy pra nós ajudar nesta empreitada hehe

Uma coisa não tem nada a ver com a outra.
Ou faltaram jars no seu classpath ou você esqueceu de assinar digitalmente os mesmos.

Java Web Start é interessante, mas dá muita dor de cabeça devido às restrições de segurança nos browsers.

Antigamente eu atualizava uma aplicação desktop programaticamente.
Havia uma pasta update que estava no início do classpath da aplicação.
Quando a aplicação era inicializada, ela tentava conectar com o servidor de atualizações.
Se havia .class mais recentes no servidor, a aplicação baixava os mesmos pra dentro da pasta update e o sistema era reiniciado.

Java Web Start roda fora do browser, é um arquivo que se baixa como qualquer outro. As restrições são do próprio Java.

Sim, me expressei mal.

Entendi. Não tenho domínio de Java, não sei se seria a melhor opção, mas foi uma sugestão. Pois a equipe que trabalha com Java consegue rodar um client Java de qualquer canto da rede interna usando Java Web Start, com atualização transparente e centralizada. Antes era Applet, que neste caso sim sofreu pela restrição dos browsers.

Quando eu inicio a aplicação pelo Netbeans ele abre normal, quando eu faço aquele esquema de compilar tudo em um jar só, junto com as bibliotecas, ele também funciona normal…

Estava tudo setado corretamente

Entendi o que vc quer fazer, mas não entendi qual é a dúvida…

@ViniGodoy, na verdade não sei nem por onde começar, queria uma ajudinha pra desenvolver essa classe de atualização.

Aí fica difícil… Vc espera que a gente poste o código todo?

Comece estudando o que aparenta ser óbvio:

  • Como trabalhar com um xml ou json de configuração
  • Como acessar um serviço de um servidor remoto
  • Como copiar dados no java

Pq para atualizar basta substituir arquivos… isso não é lá muito difícil.

Já fiz um atualizador destes a uns anos.
Basicamente me utilizei de um segundo app que faz o trabalho pq n se conseguiria fazer o mesmo jar se sobrepor.
O app do programa baixava o atualizador.jar caso n tinha ainda na máquina, o executava e se fechava, a partir de então o trabalho era do atualizador baixar, trocar a versão e rodar o app novamente.

Não, fica tranquilo @ViniGodoy nem quero que vocês façam sozinhos, só gostaria de compartilhar o desenvolvimento junto com alguém que possui mais conhecimento e experiência que eu, só pra receber uns toques, umas dicas, indicação de bibliotecas, etc… o resto é comigo.

@Rodrigo_Void você utilizou alguma biblioteca? ou escreveu na unha mesmo? compartilha algo comigo pra eu poder analisar e adaptar pra minha necessidade aqui.

Não, nem sei se existe pra isso.
o código é mto simples.
A maior parte do código é a que faz download do arquivo, talvez pra isso possa usar uma lib.