Tenho um sistema desktop que funciona a alguns anos. Nesse sistema implementei um sistema de atualização pela internet, onde baixo um arquivo txt do meu website contendo a versão mais recente do sistema e os caminhos para o download dos jars atualizados. Isso sempre funcionou, nunca tive problemas, porém, nessa ultima atualização me apareceu esse problema que me deixou perdido. Atualizei o txt para a nova atualização 3.02, porém o sistema não atualizou. Verifiquei então que o sistema esta baixando o txt antigo com a versão 3.01, e para piorar, verifiquei o txt no servidor via ftp e a versão esta atualizada(3.02). E se eu baixo o arquivo pelo browser a versão que recebo tbm é a atualizada(3.02). Estou perdido sem saber por onde resolver o problema. O sistema não parou de funcionar, apenas não consigo atualiza-lo de forma automática com era antes. Alguém teria uma ideia do que pode ser?
Download de arquivo txt em website para atualização do sistema
6 Respostas
Primeira coisa: Depurou teu código pra entender o que está acontecendo?
Somente com essas informações é praticamente impossível ajudar, há diversas formas de implementação. Coisas que podem ajudar:
- Mostrar o código onde vc pega o arquivo, junto com o código de ordenação, se tiver.
- Mostrar alguns exemplos dos nomes dos arquivos. Teve alteração em seu formato?
Então igor, não teve alteração do codigo de download, até porque o sistema de atualização é separado do software. E o sistema de atualização funcionava ja ha um bom tempo. Me parece algum cache no servidor(mas posso estar falando besteira).
Mas segue um teste que fiz agora pouco:
Esse é o arquivo(up.txt atualizado) no servidor:
software#MonitorINFO
versao#4
[color=red]dist#3.02[/color]
qtd-arquivos#4
mb-arquivos#4,8MB
#arquivos para download
#chave#nome do arquivo#url para download#tamanho
#arquivo-up#ajuda/mv4-manual.pdf#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/ajuda/mv4-manual.pdf#2,5MB
#arquivo-up#splash.jpg#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/splash.jpg#83,7KB
arquivo-up#lib/comllab-javalib.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/comllab-javalib.jar#325,2KB
arquivo-up#lib/MonitorINFO-V4.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/MonitorINFO-V4.jar#4,2MB
arquivo-up#lib/AgendaMonitorINFO.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/AgendaMonitorINFO.jar#215,9KB
arquivo-up#lib/comllab-regsoft.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/comllab-regsoft.jar#193,5KB
Esse é um trecho do código que estou executando:
String url = "http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/up.txt";
URL obj = new URL(url);
HttpURLConnection con = (HttpURLConnection) obj.openConnection();
// optional default is GET
con.setRequestMethod("GET");
//add request header
con.setRequestProperty("User-Agent", USER_AGENT);
int responseCode = con.getResponseCode();
System.out.println("\nSending 'GET' request to URL : " + url);
System.out.println("Response Code : " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuffer response = new StringBuffer();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine + "\n");
}
in.close();
//print result
System.out.println(response.toString());
E a resposta que recebo é essa, que é o arquivo up.txt antigo:
Sending ‘GET’ request to URL : http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/up.txt
Response Code : 200
software#MonitorINFO
versao#4
[color=red]dist#3.01[/color]
qtd-arquivos#4
mb-arquivos#4,8MB
#arquivos para download
#chave#nome do arquivo#url para download#tamanho
#arquivo-up#ajuda/mv4-manual.pdf#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/ajuda/mv4-manual.pdf#2,5MB
#arquivo-up#splash.jpg#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/splash.jpg#83,7KB
arquivo-up#lib/comllab-javalib.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/comllab-javalib.jar#325,2KB
arquivo-up#lib/MonitorINFO-V4.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/MonitorINFO-V4.jar#4,2MB
arquivo-up#lib/AgendaMonitorINFO.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/AgendaMonitorINFO.jar#215,9KB
arquivo-up#lib/comllab-regsoft.jar#http://www.marcelowebhost.com.br/comllab.com/software/monitor-info/4/lib/comllab-regsoft.jar#193,5KB
Fiz o teste mudando o nome do mesmo arquivo para up2.txt e executei o mesmo codigo alterando para a leitura do arquivo renomeado e nesse caso ele retornou o arquivo atualizado de forma correta, me parece que o servidor esta guardando o arquivo antigo em algum cache(mas sinceramente não sei o que acontece) e estou fazendo esses testes em vairas maquinas com windows e linux.
É… estranho… pode ser cache sim… já tentou desativar o Cache?
Tente isso:
con.setUseCaches(false);
Fiz o teste aqui igor com o “con.setUseCaches(false)” e funcionou, o problema é que vou ter que fazer uma atualização manual por conta disso. Mas pra deixar tudo mais estranho, chequei com alguns clientes e a atualização aconteceu normalmente nos computadores deles. Fiquei mais perdido ainda com a situação. Mas valeu ai pela ajuda.
De qualquer forma, funcionando no cliente ou nao, acho essa alteracao necessaria. Nao vejo necessidade de cache pra baixar um arquivo texto simples e pequeno, e é mais garantido que estará sempre com o arquivo mais atualizado.
Sim igor, na verdade esse foi um vacilo meu mesmo, escreve esse codigo de atualização faz uns 2 anos. Só vim enxergar o defeito com o problema. Mas valeu mesmo pela ajuda.