Open JhowDroid opened 8 years ago
acabei de ver que nesta versão esta funcionalidade já existe. Muito bom, David. já se antecipou! hehe
David, estou reabrindo este ticket para um detalhe que ainda não está no app.
Se o sistema informou que existe nova atualização, dentro do mesmo app pode existir a opção de baixar a atualização sem que o usuário precise abrir o navegador.
Se você achar válido esta funcionalidade para aumentar a comodidade e melhorar a experiência do usuário com a facilidade geral que o programa propõe, veja se futuramente consegue implementá-la. Eu não tenho problemas com isso e até gosto de ver os "changelogs" no site para saber o que há de novo. Mas conhecemos os jogadores e que esta funcionalidade já seria um diferencial em relação a alguns programas que todos nós costumamos usar e que não tem e ainda é necessário acessar o site para baixar.
Ref. sugestão em #5, baixar o arquivo é a parte fácil, afinal o programa já baixa a lista de cargas e faz a verificação de versões, e isso é tudo por HTTP.
O problema é que não dá pra um executável substituir a si mesmo enquanto está em execução (no Linux isso seria trivial, mas o Windows dá um erro quando se tenta substituir um arquivo que está em uso).
Duas soluções possíveis:
Opção 1 nem rola. Opção 2 pode ser possível, mas não é alta prioridade porque adicionaria complexidade já que eu teria que “reinventar a roda” (afinal o navegador já é bem eficaz no que tange a baixar arquivos) e lidar com eventuais bugs nessa parte.
No momento o tempo que eu tenho é limitado, e antes de qualquer coisa minha prioridade é que o processo de sincronização em si funcione corretamente, e adicionar suporte para o ATS.
Em suma, isso não vai ser implementado imediatamente, mas um dia é possível que seja, por isso vou deixar essa issue aberta.
@davidsantos-br acredito que seja simples corrigir isto. basta dar um rename no arquivo atual e fazer uma chamada para outro script carrega-lo
Ou então criar um atualizador separado que mate o processo e copie o novo por cima.
Sim, mas fazer esse atualizador separado levaria tempo e se eu fizer em Ruby iria dobrar o tamanho do executável (já que ele teria que ser empacotado separadamente com sua própria cópia do Ruby). Fazer em C geraria um executável bem pequeno, mas demoraria ainda mais tempo.
Em todo caso, aparentemente há uma solução ainda mais simples:
http://stackoverflow.com/questions/9162969/how-can-a-c-binary-replace-itself
Eu imaginei que como o Windows não deixa o executável ser substituído, ele também não deixaria o executável ser renomeado, mas aparentemente ele deixa.
Ou seja, é possível que essa funcionalidade acabe sendo implementada bem antes do que eu imaginava (i.e. nos próximos dias, provavelmente).
David, por isso o ticket foi aberto como sugestão. Quem sabe em um momento em que estiver com mais tempo e já tiver terminado tais prioridades.
Existe também uma 3ª solução. O aplicativo deve ter um pacote de instalação e uma pasta em "program files" para se alocar. Com um pacote de instalação e um app instalado ao invés de algo portable você tem mais opções. O programa sendo instalável não é algo que vá fazer ele deixar de ser prático. Na primeira instalação passará por um wizard, mas você ganha na atualização sem precisar de muitos passos para chegar ao objetivo. Quando se tem o pacote instalado em "program files" por exemplo, você baixa o novo pacote e ao finalizar o download pode ser executado o comando de atualizar que fará o close do programa atual e a instalação do pacote novo no mesmo local. Um processo automatizado pode ser usado com o comando hide na instalação para não precisar abrir nenhum wizard ou apenas uma barra de progresso. No final da instalação ele pode abrir automaticamente o aplicativo atualizado.
Maninho vou escrever o atualizador pra você em C ou C++ tanto faz... ai a gente testa beleza ? Existe um arquivo referência que compara as versôes ? tipo um version.txt que o atualizar vai lá e chega o velho com o programa atual ?
Faz o seguinte, essa solução do link acima parece o mais rápido. Se ele não der certo eu escrevo o atualizador ok ? @davidsantos-br
OK. Obrigado de qualquer forma, @trev0rbr.
@davidsantos-br tamo junto man !
Considere futuramente criar uma maneira do aplicativo sozinho buscar novos updates e informar o usuário que existe nova atualização. Se o sistema informou que existe nova atualização, dentro do mesmo app pode existir a opção de baixar a atualização sem que o usuário precise abrir o navegador.