Estou desenvolvendo uma aplicação swing (java6) e gostaria de que as atualizações fossem automáticas… (abstraisse do usuário a preocupação de estar ou não com a última versão)
Tenho em mente algumas opções.
1º usar webstart, está fora de cogitação tive muitos problemas pois minha aplicação requer segurança (e autorização pra criação, escrita deleção de pastas e arquivos) no nível do usuário logado… e não obtive exito nisso.
2º E parti pra outra ideia, criar um projeto a parte, quando o usuário fosse iniciar o sistema iniciaria primeiro esse update.jar e desse updade.jar (tipo um splashscreen) eu lancaria meu sistema.jar, há como fazer isso? (tentei pelo Runtime.getRuntime().exec(“java -jar sistema.jar”) aparentemente não resolveu)
Acredito que mais pertinente do que as perguntas acima é: já há algo em java feito para esse tipo de problema? ou outra opção que vocês aconselham?
Eu pensava que a solução para esse tipo de situação seria mesmo o Java Web Start. Tem certeza que ele não atende às suas restrições? Verifique se seus testes foram bem feitos mesmo…
[]'s.
dreampeppers99
Em tese atenderia (deve atender), talvez o grande culpado seja minha ignorância sobre o webStart, fiz algumas modificações para que o mesmo rodasse “com privilégios do usuário logado” porém o sistema não funcionou corretamente.
A situação típica de: roda perfeito quando executo o jar mas quando tento pelo lançador webstart não funciona. E minha opinião é que seria (talvez) problema de privilégio.
Pra ter uma ideia mais clara, o sistema apresenta uma combo com os drivers (unidades de disco, cd, dvd…) do pc, essa lista nem foi populada. Faço e refaço as coisas com a versão “desktop” rodando local tudo funciona perfeitamente, procurei alguma ajuda no google e as resposta sempre traziam o assunto segurança em alta… eu não consegui faze-lo rodar com os privilégios necessário (claro, isso é o que eu acho, pelos testes que fiz localmente pelo swingão comparando com os testes do webstart), apesar de ter seguido a configuração de um ou dois tutoriais na net.
blackthorne
voces desistiram de usar java web start?
estou precisando de uma solucao parecida com esta, tenho uma aplicacao desktop que precisaria de auto-update.
No caso, nao tenho problemas com nivel de usuario (pois o usuario logado ja restringe isso).
Como ficou sobre o webstart?
dreampeppers99
blackthorne:
voces desistiram de usar java web start?
estou precisando de uma solucao parecida com esta, tenho uma aplicacao desktop que precisaria de auto-update.
No caso, nao tenho problemas com nivel de usuario (pois o usuario logado ja restringe isso).
Como ficou sobre o webstart?
Eu criei uma aplicação updater… que roda antes e faz o download (se necessário) dos arquivos (.jar, gif …) para pasta !
Meu repositorio é um ftp.
paulofafism
Você pode usar o GlassFish como o seu servidor de aplicação. Ai quando você atualizar o seu servidor, seus clientes serão automaticamentes atualizados, já que na máquina do cliente terá apenas um link para acesso a aplicação do servidor.
Eu uso dessa forma e nunca tive problemas.
Minha arquitetura é GlassFish+Hibernate+JPA+SQL Server
blackthorne
oi,
mas minha necessidade é bem mais simples.
Tenho apenas uma app.jar standalone. apenas preciso que ele, mesmo durante sua execucao, seja atualizado apos disponibilizada uma nova release…
Nesse caso, nao eh nenhuma app web. So existiria uma app web para servir as releases dos jars a serem baixados.
dreampeppers99
Basicamente minha opção também era mais simples e tentei (muito) o webstart, mas por falta de conhecimento (eu acredito) não consigui usá-lo.
Veja o esqueleto mor da aplicação:
if (versaoBase() < versaoServidor()) {
atualizar("Baixando a nova versão...", 45);
pausar(1650l);
baixarEInstalarNovaVersao();
atualizar("Nova versão instalada. Versão - " + versaoServidor(), 100);
pausar(1650l);
}else{
atualizar("A versão instalada é a mais atual.", 100);
pausar(1650l);
}
executarAplicativo();
Esse pausar é pra causar uma impressão de que o processo é complexo. :roll: