Biblioteca de atualização automática para .NET?

No Mac, há uma biblioteca muito legal chamada Sparkle que os programas podem usar para implementar a funcionalidade de verificação / instalação para atualizações automáticas.

Existe alguma coisa semelhante lá fora para o .net? Ou apenas regular Win32?

ClickOnce tem suas próprias limitações de segurança (compreensivelmente isso). Se você quiser o poder total e o controle de um aplicativo do Windows, vá com o componente atualizador do aplicativo .NET . Funciona como um charme e até tem sido usado pela Microsoft internamente para o seu jogo baseado em .NET (não me lembro o nome do jogo).

Deixe-me começar por dizer que oferecemos uma solução de atualização completa que inclui:

  • Um atualizador de código aberto, wyUpdate , escrito em c #
  • O controle gratuito do AutomaticUpdater que você pode adicionar ao formulário do seu aplicativo .NET
  • O wyBuild é usado para construir correções e gerenciar suas versões

O wyUpdate cuida de todos os problemas do Vista / Windows 7 UAC e de todos os problemas de permissão de arquivos que surgem inevitavelmente quando você está tentando atualizar softwares complexos.

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

Construindo seu próprio atualizador

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

  • Suporte total ao Windows Vista / Windows 7 UAC
  • Capacidade para usuários limitados verificarem e, em seguida, atualizarem se tiverem credenciais
  • Suporte para inernet corporativa instável. (Se você já trabalhou com uma corporação, este é um problema real).
  • Extração rápida, correção e instalação de arquivos.
  • Suporte de registro.
  • Reverter arquivos e registro de erro ou cancelamento pelo usuário
  • Autoatualização (nenhum arquivo deixado para trás)

Nós também temos as especificações do arquivo aqui .

Atualização automática

Como ser automático é um requisito, deixe-me dizer-lhe como fazemos isso com nosso controle AutomaticUpdater .

Usamos pipes nomeados para nos comunicarmos entre o atualizador autônomo (wyUpdate) e o controle do Atualizador Automático no formulário do seu programa. O wyUpdate reporta o progresso para o Automatic Updater, e o Automatic Updater pode dizer ao wyUpdate para cancelar o progresso, para iniciar o download, iniciar a extração, etc.

Isso mantém o atualizador separado do seu aplicativo.

Na verdade, o código C # de pipes nomeados exato que usamos está incluído em um artigo que escrevi há pouco: app C # de processo múltiplo como o Google Chrome .

ClickOnce é o meu método preferido. Tem algumas verrugas, mas vem com o Visual Studio e funciona razoavelmente bem.

O ClickOnce é muito usado, mas você pode fazer o que eu fiz para um aplicativo grande e tentar estes:

  • Atualização automática de aplicativos no VB.NET

  • Atualização Automática de Aplicativo Revisitada

Eu mexi um pouco na lógica e criei o que eu achava que era um arquivo de atualização XML melhor. Agora, quando preciso atualizar os clientes, acabei de postar os novos arquivos EXE ou DLL e definir as versões corretas no arquivo XML público. Meu aplicativo detecta as versões mais recentes, se for mais antigo e se atualiza. Se você estiver fazendo isso no Windows Vista , será necessário solicitar permissions de administrador para que os Arquivos de Programas possam ser gravados (se você instalar lá).

Você também pode facilmente converter isso em C # usando C # / VB.NET Converter .

Acabei de passar pelo processo de fazer isso e usei o NetSparkle .

Funcionou como anunciado para um aplicativo Windows Forms com um instalador MSI que sobrescreve a versão anterior. Estou muito feliz por ter encontrado também – eu estava prestes a fazer o meu próprio. Eu sou o único a fazer aplicações .NET realmente simples? Principalmente tudo que eu olhei parecia um exagero completo.

Eu não tentei o NetSparkle ainda (eu vou depois), mas parece que é o que você está procurando.

O NetSparkle é uma estrutura de atualização de software fácil de usar para desenvolvedores .NET no Windows, Mac ou Linux. Foi inspirado no projeto Sparkle para desenvolvedores Cocoa e no projeto WinSparkle (uma porta Win32 ).

Eu acho que WyBuild é boa alternativa Sparkle)

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

Então, a integração é super fácil, e a biblioteca faz praticamente tudo para você, incluindo operações de synchronization. Ele também é altamente flexível e permite determinar quais tarefas executar e em quais condições – você faz as regras (ou usa algumas que já estão lá). Por último, mas não menos importante, existe o suporte para qualquer fonte de atualização (web, BitTorrent, etc) e qualquer formato de feed – o que não estiver implementado, você pode simplesmente escrever para si mesmo.

As atualizações a frio (que exigem uma reboot do aplicativo) também são suportadas e feitas automaticamente, a menos que “hot-swap” seja especificado para a tarefa.

Isso se resume a uma DLL com menos de 70 KB de tamanho.

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

O código está em http://github.com/synhershko/NAppUpdate (Licenciado sob a licença Apache 2.0)

Eu pretendo estendê-lo mais quando eu tiver mais algum tempo, mas honestamente você deve ser capaz de aprimorá-lo rapidamente para o que atualmente não suporta.

Existe um utilitário muito legal chamado Updater . Parece que está escrito em C ou C ++ . Consegui configurar os arquivos XML e carregá-los no servidor de produção e, depois, posso executar o Updater e verificar o arquivo XML para uma versão diferente e fazer o download de um novo pacote de instalação de atualização que eu criei usando o Nullsoft Scriptable Install System. (NSIS)

Investigamos um punhado de opções e decidimos usar o AppLife Update . O AppLife Update pode adicionar de maneira rápida e fácil a funcionalidade de atualização automática para seus aplicativos .NET, mas também é flexível devido à sua API abrangente.

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

DotNetAutoUpdate

Eu implementei uma biblioteca para fazer isso chamado DotNetAutoUpdate (nome original eh?). Destina-se a ser:

  • Simples de usar
  • Simples de configurar
  • Seguro

Para atualizar os aplicativos clientes .Net, dê uma olhada no AppLife Update . É muito flexível, extensível e personalizável.

Isenção de responsabilidade – Estou associado à atualização do AppLife.