Update de aplicação

Galera estou precisando montar um comando de update em minha aplicação, algo como um botão e ao pressionar ele vai se conectar com a base de dados e baixar a ultima atualização do sistema, então deverá sair do programa depois de baixado e executar a instalação, assim instalando por cima a versão mais nova.

Minha idéia é fazer o seguinte, baixar o arquivo de instalação e guardar em algum lugar do celular com a biblioteca fileconnection, em seguinda executar este arquivo.

Minha duvida é, como eu faço pra executar este arquivo depois de eu ter baixado a atualização? esta minha idéia esta correta? alguem tem uma sugestão melhor?

entenda que o meu sistema está em desenvolvimento, então vai ser necessario a instalação dele nos celulares de tempos em tempos, o problema é ficar instalando toda vez que algo for mudado pq tem varios funcionarios utilizando este sistema, emtão minha idéia é fazer algo facil, apenas apertando um botão da aplicação e fazendo o upload.

[quote=Shakall]Galera estou precisando montar um comando de update em minha aplicação, algo como um botão e ao pressionar ele vai se conectar com a base de dados e baixar a ultima atualização do sistema, então deverá sair do programa depois de baixado e executar a instalação, assim instalando por cima a versão mais nova.

Minha idéia é fazer o seguinte, baixar o arquivo de instalação e guardar em algum lugar do celular com a biblioteca fileconnection, em seguinda executar este arquivo.

Minha duvida é, como eu faço pra executar este arquivo depois de eu ter baixado a atualização? esta minha idéia esta correta? alguem tem uma sugestão melhor?

entenda que o meu sistema está em desenvolvimento, então vai ser necessario a instalação dele nos celulares de tempos em tempos, o problema é ficar instalando toda vez que algo for mudado pq tem varios funcionarios utilizando este sistema, emtão minha idéia é fazer algo facil, apenas apertando um botão da aplicação e fazendo o upload.[/quote]

A solução para o problema de atualização é simples:

Use o método platformRequest da classe MIDlet passando o endereço HTTP onde está o teu aplicativo.

O celular saberá através da análise da URL que terá que navegar até este endereço, o que acabará fazendo com que o processo de download se inicie, gerando algumas perguntas para o usuário que deverá responder, isto devido a sua aplicação não ser assinada digitalmente (suponho).Uma vez ele respondendo, o processo de download se inicia e a aplicação é instalada por cima da que existe.

[quote=boone][quote=Shakall]Galera estou precisando montar um comando de update em minha aplicação, algo como um botão e ao pressionar ele vai se conectar com a base de dados e baixar a ultima atualização do sistema, então deverá sair do programa depois de baixado e executar a instalação, assim instalando por cima a versão mais nova.

Minha idéia é fazer o seguinte, baixar o arquivo de instalação e guardar em algum lugar do celular com a biblioteca fileconnection, em seguinda executar este arquivo.

Minha duvida é, como eu faço pra executar este arquivo depois de eu ter baixado a atualização? esta minha idéia esta correta? alguem tem uma sugestão melhor?

entenda que o meu sistema está em desenvolvimento, então vai ser necessario a instalação dele nos celulares de tempos em tempos, o problema é ficar instalando toda vez que algo for mudado pq tem varios funcionarios utilizando este sistema, emtão minha idéia é fazer algo facil, apenas apertando um botão da aplicação e fazendo o upload.[/quote]

A solução para o problema de atualização é simples:

Use o método platformRequest da classe MIDlet passando o endereço HTTP onde está o teu aplicativo.

O celular saberá através da análise da URL que terá que navegar até este endereço, o que acabará fazendo com que o processo de download se inicie, gerando algumas perguntas para o usuário que deverá responder, isto devido a sua aplicação não ser assinada digitalmente (suponho).Uma vez ele respondendo, o processo de download se inicia e a aplicação é instalada por cima da que existe.

[/quote]
posso fazer isso da aplicação mesmo correto? ele mesmo irá tratar o fechamento da aplicação e a instalação do arquivo baixado?

Você não pode…DEVE !
Recomendo após o platformRequest, que é uma chamada assíncrona, finalizar a sua midlet.

[quote]A solução para o problema de atualização é simples:

Use o método platformRequest da classe MIDlet passando o endereço HTTP onde está o teu aplicativo.

O celular saberá através da análise da URL que terá que navegar até este endereço, o que acabará fazendo com que o processo de download se inicie, gerando algumas perguntas para o usuário que deverá responder, isto devido a sua aplicação não ser assinada digitalmente (suponho).Uma vez ele respondendo, o processo de download se inicia e a aplicação é instalada por cima da que existe.

[/quote]

Mas aí ele fará o download sempre que eu iniciar a minha aplicação ou apenas se a versão que estiver na URL for mais recente? Se for assim como ele verifica a versão… através do JAD?

[quote=JavaES][quote]A solução para o problema de atualização é simples:

Use o método platformRequest da classe MIDlet passando o endereço HTTP onde está o teu aplicativo.

O celular saberá através da análise da URL que terá que navegar até este endereço, o que acabará fazendo com que o processo de download se inicie, gerando algumas perguntas para o usuário que deverá responder, isto devido a sua aplicação não ser assinada digitalmente (suponho).Uma vez ele respondendo, o processo de download se inicia e a aplicação é instalada por cima da que existe.

[/quote]

Mas aí ele fará o download sempre que eu iniciar a minha aplicação ou apenas se a versão que estiver na URL for mais recente? Se for assim como ele verifica a versão… através do JAD?[/quote]

Sempre fará, afinal a chamada a platformRequest está sempre sendo feita !

Quem tem que controlar quando platformRequest deve ser chamada é você, através de uma consulta usando servlet etc…enfim, tem-se que montar uma infraestrutura de controle de versão. Não dá trabalho…

Cara muito obrigado pela ajuda, aqui deu certo, coisa simples.

private void update(){ try { platformRequest("http://xxx.xxxx.xxx/Aplicacao.jad"); exitMIDlet(); } catch (ConnectionNotFoundException ex) { ex.printStackTrace(); } }

[quote=Shakall]Cara muito obrigado pela ajuda, aqui deu certo, coisa simples.

private void update(){ try { platformRequest("http://xxx.xxxx.xxx/Aplicacao.jad"); exitMIDlet(); } catch (ConnectionNotFoundException ex) { ex.printStackTrace(); } }[/quote]

Se quiser incrementar a bagaça, pode ficar sabendo quando instalam sua aplicação no aparelho colocando uma URL para ser chamada pelo celular assim que a instalação ocorre. Para isto coloque o seguinte no seu JAD:

A questão aqui é que você terá que gerar um JAD para cada aplicação disponibilizada (automatizar este processo),pois o parâmetro codigo teria que ter um valor diferente para cada aparelho onde a aplicação fosse instalada. Enfim, te dei a idéia, se achar interessante, vá mais fundo…