Pergunta

Esta questão já tem uma resposta aqui:

Estamos em um processo de desenvolvimento de um sistema muito complexo que consiste de vários serviços WCF, as aplicações ASP.NET MVC, ferramentas de administração (aplicativos Windows Forms) ... Algumas das pessoas, terá instâncias em execução em vários servidores. Estamos à procura de uma boa solução de atualização automática para tal sistema a. Muito provavelmente, seria necessário um pedido separado de atualização automática (serviço) que vai fazer o trabalho, ou algum aplicativo de administração centralizada que vai saber sobre as versões de todas as instâncias instaladas e fazer a atualização remotamente. Existe algum bom produto / biblioteca, feito para esta finalidade, que você sabe sobre ou tiveram experiência com?

Foi útil?

Solução

Pessoalmente, eu estou usando uma metodologia muito simples para qualquer tipo de auto-update:

  • Tenha um instalador
  • Verifique a nova versão (WebClient simples e números comparam com o seu AssemblyVersion atual)
  • Se a versão for maior de download do instalador mais recente (deve ser através de SSL por razões de segurança)
  • Execute o instalador baixado e fechar o aplicativo. (Nesta fase você precisa ter privilégios de administrador se o seu instalador exige que você seja um administrador)

O instalador deve tomar conta do resto. Desta forma, você sempre terá a versão mais recente e um instalador com uma versão mais recente.

Outras dicas

Deixe-me começar por dizer que eu sou o fundador da empresa que tem uma solução de atualização completa que inclui:

wyUpdate lida com todos os problemas Vista / Windows 7 UAC e todos os problemas de permissão de arquivo que inevitavelmente surgem quando você está tentando atualizar software complexo.

Nós também oferecemos licenças gratuitos a wyBuild para o open source projetos , mas se você está apenas olhando para construir o seu próprio atualizador pode canibalizar o nosso código-fonte livremente.

Dito isto, se você quer construir seu próprio atualizador aqui estão algumas dicas:

Construir seu próprio atualizador

Um bom lugar para começar é o wyUpdate e AutomaticUpdater código fonte que eu mencionei acima. Você pode canibalizar-lo e usá-lo para seus próprios fins. Alguns dos algoritmos que ela contém:

  • completa do Windows Vista / Windows 7 suporte UAC
  • Capacidade para os usuários limitados para verificar e atualizar se eles têm credenciais
  • Suporte para inernet corporativa wonky. (Se você nunca trabalhou com uma empresa este é um problema real).
  • Breve extração, aplicação de patches, e instalação de arquivos.
  • Suporte Registro.
  • arquivos reverter & registro em erro ou cancelamento pelo usuário
  • auto-update (nenhum arquivo deixado para trás)

Temos também os href="http://wyday.com/wyupdate/file-specifications.php" especificações de arquivo aqui .

Atualização automática

Desde ser automática é uma exigência deixe-me dizer-lhe como fazemos com a nossa AutomaticUpdater controle .

Usamos tubos para a comunicação entre o atualizador autônomo (wyUpdate) eo controle Automatic Updater sentado na forma do seu programa nomeado. relatórios wyUpdate avançar para o Automatic Updater, eo Automatic Updater pode dizer wyUpdate para cancelar o progresso, para iniciar o download, iniciar a extração, etc.

Isso mantém o atualizador separar de sua aplicação.

Na verdade, os tubos C # código exato chamado que usamos é incluído em um artigo que eu escrevi um pouco para trás: multi-processo C # aplicativo como o Google Chrome .

Aqui está uma solução de código aberto que eu escrevi às necessidades específicas endereço que tínhamos para WinForms e aplicativos WPF. A ideia geral é ter a maior flexibilidade, com o menor sobrecarga possível.

Assim, Integração é super-fácil, e a biblioteca faz praticamente tudo para você, incluindo operações de sincronização. Também é altamente flexível , e permite determinar quais as tarefas a executar e em que condições - você faz as regras (ou usar alguns que já estão lá). Último por não menos importante é o suporte para qualquer fonte de atualizações (web, BitTorrent, etc) e qualquer formato alimentação -. Tudo o que não é implementado você pode apenas escrever para si mesmo

atualizações fria (que requerem uma reinicialização do aplicativo) também é suportado, e feito automaticamente, a menos "hot-swap" é especificado para a tarefa.

Esta boild para baixo a uma DLL, a menos de 70kb de tamanho.

Mais detalhes em http: //www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

código é em http://github.com/synhershko/NAppUpdate (licenciado sob a Apache 2.0 licença)

Estou pensando em estendê-lo mais quando eu vou chegar um pouco mais de tempo, mas honestamente, você deve ser capaz de melhorá-lo rapidamente se para o que quer que atualmente não suporta.

A actualização automática serviços WCF e sites ASP.NET deve ser possível fazer tão bem com ele, usando o "hot-swap" de arquivos e "iisreset" tarefa quando necessário.

ClickOnce para suas ferramentas de administração.

Nós investigamos um punhado de opções e decidiu usar a biblioteca AppLife Atualização para nosso projeto enterpise.

AppLife Update pode rapidamente e facilmente adicionar funcionalidade de atualização automática para o seu .NET aplicativos, mas também é flexível por causa de sua API abrangente.

Veja a lista completa de recursos e alguns vídeos de demonstração em seu site.

Para aplicações WPF simples, aqueles que talvez usar instalar Xcopy, você pode usar este AppUpdater módulo . É um módulo de origem, apenas algumas linhas de código, adicionar capacidade de atualização para um aplicativo WPF simples.

É grátis.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top