Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
bioshock

Aplicação com actualizações

Recommended Posts

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:

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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?

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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!

Share this post


Link to post
Share on other 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.

Share this post


Link to post
Share on other 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  :cheesygrin:, 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  ;)

Share this post


Link to post
Share on other sites
bioshock

Já agora, acho que não vou ter problemas nenhuns em máquinas linux  🤔

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.