Domanda

    

Questa domanda ha già una risposta qui:

         

Stiamo sviluppando un sistema davvero complesso costituito da numerosi servizi WCF, applicazioni ASP.NET MVC, strumenti di amministrazione (app di Windows Form) ... Alcuni di questi avranno istanze in esecuzione su più server. Stiamo cercando una buona soluzione di aggiornamento automatico per un tale sistema. Molto probabilmente, avremmo bisogno di un'applicazione di aggiornamento automatico separata (servizio) che farà il lavoro o di un'applicazione di amministrazione centralizzata che conoscerà le versioni di tutte le istanze installate e eseguirà l'aggiornamento in remoto. Esiste un buon prodotto / libreria, creato per questo scopo, che conosci o con cui hai esperienza?

È stato utile?

Soluzione

Personalmente sto usando una metodologia molto semplice per qualsiasi tipo di aggiornamento automatico:

  • Avere un programma di installazione
  • Controlla la nuova versione (semplice WebClient e confronta i numeri con l'attuale AssemblyVersion)
  • Se la versione è successiva, scaricare il programma di installazione più recente (per motivi di sicurezza dovrebbe essere su SSL)
  • Esegui il programma di installazione scaricato e chiudi l'applicazione. (in questa fase devi avere i privilegi di amministratore se il tuo installatore richiede di essere un amministratore)

L'installer dovrebbe occuparsi di tutto il resto. In questo modo avrai sempre l'ultima versione e un programma di installazione con una versione più recente.

Altri suggerimenti

Vorrei iniziare dicendo che sono il fondatore dell'azienda che ha una soluzione di aggiornamento completa che include:

wyUpdate gestisce tutti i problemi di controllo dell'account utente Vista / Windows 7 e tutti i problemi di autorizzazione dei file che inevitabilmente compaiono quando si tenta di aggiornare software complessi.

Offriamo anche licenze gratuite a wyBuild per progetti open source , ma se stai solo cercando di creare il tuo aggiornamento personale, puoi cannibalizzare liberamente il nostro codice sorgente.

Detto questo, se vuoi costruire il tuo aggiornamento qui ci sono alcuni suggerimenti:

Costruisci il tuo aggiornamento

Un buon punto di partenza è wyUpdate e AutomaticUpdater codice di cui ho parlato sopra. Puoi cannibalizzarlo e usarlo per i tuoi scopi. Alcuni degli algoritmi che contiene:

  • Supporto UAC completo per Windows Vista / Windows 7
  • Possibilità per gli utenti con limitazioni di controllare e quindi aggiornare se dispongono di credenziali
  • Supporto per Internet aziendale traballante. (Se hai mai lavorato con una società questo è un vero problema).
  • Estrazione rapida, patch e installazione di file.
  • Supporto registro.
  • Ripristina file e amp; registro in caso di errore o cancellazione da parte dell'utente
  • Aggiornamento automatico (nessun file lasciato indietro)

Abbiamo anche le specifiche del file qui .

Aggiornamento automatico

Dato che essere automatici è un requisito, lascia che ti dica come lo facciamo con il nostro Controllo AutomaticUpdater .

Utilizziamo le pipe denominate per comunicare tra il programma di aggiornamento autonomo (wyUpdate) e il controllo Aggiornatore automatico che si trova sul modulo del programma. wyUpdate riporta lo stato di avanzamento al programma di aggiornamento automatico e il programma di aggiornamento automatico può dire a wyUpdate di annullare i progressi, iniziare il download, iniziare a estrarre, ecc.

Ciò mantiene il programma di aggiornamento separato dalla tua applicazione.

In effetti, l'esatto codice C # named pipe che utilizziamo è incluso in un articolo che ho scritto poco tempo fa: App C # multi-processo come Google Chrome .

Ecco una soluzione open source che ho scritto per rispondere a esigenze specifiche che avevamo per WinForms e app WPF. L'idea generale è quella di avere la massima flessibilità, il più basso possibile.

Quindi, integrazione è semplicissima e la libreria fa praticamente tutto per te, comprese le operazioni di sincronizzazione. È anche altamente flessibile e ti consente di determinare quali attività eseguire e a quali condizioni: fai le regole (o ne usi già alcune). Non ultimo è il supporto per qualsiasi fonte di aggiornamenti (web, BitTorrent, ecc.) E qualsiasi formato di feed - qualunque cosa non sia implementata, puoi semplicemente scrivere per te.

Anche gli aggiornamenti a freddo (che richiedono il riavvio dell'applicazione) sono supportati e vengono eseguiti automaticamente a meno che "hot-swap". è specificato per l'attività.

Questo limite si riduce a una DLL, di dimensioni inferiori a 70kb.

Maggiori dettagli su http: //www.code972.com/blog/2010/08/nappupdate-application-auto-update-framework-for-dotnet/

Il codice è all'indirizzo http://github.com/synhershko/NAppUpdate (concesso in licenza in Apache 2.0 licenza)

Ho intenzione di estenderlo di più quando avrò ancora un po 'di tempo, ma onestamente dovresti essere in grado di migliorarlo rapidamente per tutto ciò che attualmente non supporta.

I servizi WCF ad aggiornamento automatico e i siti Web ASP.NET dovrebbero essere possibili anche con esso, usando "hot-swap". di file e " iisreset " compito ove necessario.

ClickOnce per i tuoi strumenti di amministrazione.

Abbiamo esaminato una manciata di opzioni e abbiamo deciso di utilizzare la libreria AppLife Update per il nostro progetto enterpise.

AppLife Update può aggiungere rapidamente e facilmente funzionalità di aggiornamento automatico per le tue app .NET ma è anche flessibile grazie alla sua API completa.

Vedi l'elenco completo delle funzionalità e alcuni video dimostrativi sul loro sito Web.

Per le semplici applicazioni WPF, quelle che potrebbero usare Xcopy install, puoi usare questo modulo AppUpdater . È un modulo sorgente, solo poche righe di codice, per aggiungere funzionalità di aggiornamento a una semplice app WPF.

È gratuito.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top