Ir para o conteúdo
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

bioshock

Aplicação com actualizações

Mensagens Recomendadas

bioshock

Boas povo.

Enquanto estava aqui a realizar uma aplicação, surgiu-me a dúvida: O que é necessário para a aplicação sofrer os updates automaticamente? Indo pela lógica, eu precisaria:

1. De uma base de dados website/aplicação (MySQL);

2. De um servidor online para que sempre que houvesse uma actualização de dados no PC do programador, ele enviasse para lá as novas actualizações;

3. No PC que vai obter as novas actualizações, ter internet e sempre que executada a aplicação fazer um rastreio ao servidor, para verificar se existe ou não actualizações;

Em suma, é isto. É necessário algo mais? Quanto tempo demora a aplicar um sistema destes? Também gostava de saber se é possível implementar na linguagem VB.NET (que é onde estou a desenvolver a aplicação) e se existe documentação para me seguir?

Um obrigado  :thumbsup:

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Depende da complexidade dos updates e do que queres fazer. Um sistema que permite o download do executável, para que o utilizador possa instalar manualmente o novo update, pode ser tão simples como ter a indicação da última versão disponível num qualquer URL e indicar ao utilizador no arranque da tua aplicação.

Para que a aplicação faça automaticamente a instalação e actualização já precisas de fazer toda uma aplicação auxiliar, que pode ou não estar embutida na aplicação principal, e que permite fazer a actualização. Mesmo para isso existem várias estratégias, por exemplo, se usaste um sistema para criar o instalador, como o INNO Setup, podes simplesmente fazer download de uma nova versão que desinstala a anterior e se instala tudo com o INNO Setup, quem diz este diz qualquer outro sistema de instalação que permita actualizações.

Se podes usar FTP, podes mas também corres o risco de o FTP estar bloqueado no computador do utilizador. E o FTP seria só a parte do download, a parte complicada estará em actualizar os ficheiros de uma aplicação que se encontre a executar ou até, se a aplicação tiver uma BD, de actualizar a BD sem deitar por terra todos os dados do utilizador.

Estratégias para actualização existem aos milhares mas depende muito do que queres implementar. E VB.Net servirá tão bem como qualquer outra linguagem.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Sim, pelo que já andei a ler VB.NET serve perfeitamente.

Quanto à BD, esta não é necessária, pois a BD vai estar alojada no local da aplicação.

Ou seja, o objectivo era mesmo: Eles tem a aplicação na empresa. Actualmente, caso eles me pedissem para fazer uma alteração na aplicação eu teria que modificar o código da aplicação e criar novamente um setup.

O que eu pretendo é, estando eu em casa, fazer uma alteração na aplicação e quando estes entrarem no software detectar o novo update. Então pensei: Posso ter um servidor FTP onde este tenha lá os ficheiros necessários (Aqui é que eu não sei quais os ficheiros que devo lá por, DLL's  da aplicação(?)), e sempre que o utilizador corra o programa, ele detecta se o tamanho do ficheiro que está no FTP for diferente do actual, então faz o download e substitui todos os ficheiros necessários.

É mal pensado? Obrigado Knitter.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

O tamanho pode não ser a melhor opção. Podes simplesmente ter lá um ficheiro com a versão actual, se a aplicação detectar que a versão é inferior à que está no ficheiro inicia o download.

Os ficheiros a colocar vão depender da forma como fizeres a aplicação. Por exemplo, se a aplicação é modular, e podes actualizar os vários módulos, que no caso de .net deverão ser dlls, podes ter no servidor os dlls que constituem a aplicação e só fazer download do que foi modificado. Se a aplicação não pode ser individualizada, o melhor é ter todo o setup no servidor e reinstalar a aplicação. De qualquer modo vais ter de fazer um pequeno aplicativo que faça o processo de actualização já que, se quiseres actualizar um dll em uso tens de fechar a aplicação que o está a usar, e se quiseres reinstalar a aplicação tens de desinstalar a que existe antes de colocares a nova.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Sim, realmente o tamanho pode não ser a melhor opção.

Ao fazer o download das dll's necessárias, também tem de haver a opção de detectar onde a aplicação está instalada..a não ser que, acho que é possível com o INNO, não deixar mudar o directório de instalação, o que me dizes?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

Para isso é que serve a aplicação de actualização auxiliar, para fazer download, fechar a aplicação principal, copiar os ficheiros para o local correcto, e voltar a abrir a aplicação principal. Precisas que exista algo que faça esse controlo.

Se usares uma opção tipo InnoSetup, então aí já é o script de instalação que tem de detectar onde a aplicação está instalada e desinstalar em conformidade, não vale a pena impedires a alteração de local, tens é de detectar correctamente onde a aplicação está instalada.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Hmm, heis os pontos que já consigo:

1. Upload para FTP;

2. Download do FTP;

3. Comparar se o ficheiro do FTP é o mesmo do PC (caso seja então não faz nada, caso não seja faz o download);

Eu prefiro fazer via FTP. Agora resta-me saber como encontrar os ficheiros da aplicação para comparar com os ficheiros do FTP.

E também preciso de saber que ficheiros é que são necessários do VB.NET para modificar, correctamente, a aplicação.

Em relação à aplicação auxiliar, em principio meto em prática esse método.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Warrior

Provavelmente podes assumir que o directório de instalação é o directório no qual a aplicação auxiliar está a correr, ou um directório qualquer relativo a esse, visto ser distribuída em conjunto com a aplicação.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Mas isso não me levava para o mesmo problema Warrior?

A aplicação auxiliar vai, sempre que a aplicação principal iniciar, ser chamada. Ambas as aplicações vão estar na mesma pasta..

Se eu conseguisse obter o directório da auxiliar, também conseguia da principal.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Knitter

O .net tem métodos que te dizem em que pasta está a correr a aplicação. Não te sei dizer quais são de cor porque não mexo em algo desse género para .net à algum tempo mas é algo bastante comum. Encontrar a pasta onde estás a executar a aplicação não será o problema.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Assim sim, não tinha pensado nessa solução. Sim, deve haver algo como: 'GetCurrentDirectory' ou algo semelhante.

Eu só estou agora com problema em executar em pleno a aplicação noutro PC, ele dá-me erro na connexão ao FTP. Não sei se é por causa do SSL, ou algo semelhante.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Bem este problema foi resolvido. O vista/7 tem destas merdices. Não funcionava devido aos privilégios de administrador.

Eu vou dando novidades, obrigado a ambos!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Boas!

Bem surgiram aqui uns problemas que me estão a comer a cabeça.

Quando há um update, o melhor será fazer download do novo ficheiro e eliminar o antigo, correcto?

Mas eu preciso de um método que registe, em algum lugar, que a nova actualização.

Quando o programa for iniciado novamente ele tem de comparar a actualização que tem guardada com a do FTP.

Estou a pensar bem?

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Por curiosidade, usaste o clickOnce ou o método de download via http/ftp? Como passaste o problema das permissões do Vista/7?


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Não usei clickOnce, até porque nem consegui por isso a funcionar.

Usei via FTP, o problema das permissões do Vista/7 é a única coisa que ainda não testei, porque não tenho nenhum pc à mão com esse SO.

Mas estou a pensar em meter tudo num setup e mandar a um amigo para ele testar.

Qualquer dúvida apita!

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
softklin

Eu perguntei porque ia sugerir o clickOnce, apesar de nunca ter testado. QUanto ao problema das permissões, se o programa tentar escrever qualquer ficheiro dentro da pasta de programas, não irá funcionar sem elevação. Para o problema particular das actualizações, o teu programa update.exe terá de pedir elevação, tenta ver aqui:

http://stackoverflow.com/questions/90702/how-does-a-program-ask-for-administrator-privileges


Nick antigo: softclean | Tens um projeto? | Wiki P@P

Ajuda a comunidade! Se encontrares algo de errado, usa a opção "Denunciar" por baixo de cada post.

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
bioshock

Pois, eu vi umas informações do clickOnce, mas não gostei. Prefiro ter o código todo feito por mim, tenho uma melhor percepção e sempre aprendo/aprendi algo.

Mas o melhor de tudo foi que eu não criei nenhuma aplicação auxiliar  :biggrin:, arranjei um método para fazer download da nova versão e eliminar a antiga  :)

Por acaso vou ter que dar uma olhadela nas permissões manhosas do vista, provavelmente vai-me criar problemas. Obrigado pelo link  ;)

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.