2010-09-14 9 views
58

Google ha aperto il meccanismo di aggiornamento automatico utilizzato in Google Chrome come Omaha.Qual è l'esperienza con Google 'Omaha' (il loro motore di aggiornamento automatico per Chrome)?

Sembra abbastanza complicato e difficile da configurare per chiunque non sia Google. Qual è l'esperienza che usa Omaha nei progetti? Può essere raccomandato?

+0

Note: è utilizzato per l'aggiornamento del software automatico di Google Chrome Chrome ed è specifico per Windows ora! –

+4

Ho provato a utilizzare Google Omaha ma ho trovato complicato lavorare con. Invece abbiamo scelto di usare WyUpdate e ne siamo stati abbastanza contenti. –

+3

Ho appena pubblicato un [tutorial] (https://fman.io/blog/google-omaha-tutorial/) su Omaha. I documenti ufficiali sono buoni, ma richiedono di capire un sacco di cose da soli. Spero che il tutorial renderà più semplice per gli altri iniziare. –

risposta

0

Un meccanismo di aggiornamento automatico è qualcosa che personalmente codificherò personalmente e che ho sempre avuto in passato. A meno che tu non abbia un'applicazione multi-gigabyte e desideri solo caricare bit e pezzi, fai affidamento solo sul tuo codice/programma di installazione. Detto questo, non ho affatto guardato la libreria open source di Google ... e non sapevo nemmeno che esistesse. Non posso immaginare che offra qualcosa di superiore a ciò che potresti codificare da solo, e con il tuo codice personale non sei vincolato da alcuna restrizione di licenza.

+10

Personalmente, trovo che i framework di aggiornamento automatico di terze parti siano un grande vantaggio. Almeno nel mondo Mac Dev, [Sparkle] (http://sparkle.andymatuschak.org/) è un'opzione frequentemente utilizzata; chiaramente molti sviluppatori stanno optando per il prefabbricato. –

+2

Correggimi se ho torto ma da quando ho installato Chrome non ho mai avuto bisogno di "aggiornare", è tutto trasparente in background e lo fa senza che io debba fare nulla. IIRC, quando è uscito per la prima volta, hanno parlato di essere in grado di aggiornare l'attuale distribuzione binaria tramite un processo simile al diff binario ecc. Che rende questo molto interessante e molto diverso rispetto a quello in cui si richiede all'utente di scaricare e installa la nuova versione – dstarh

+0

Sì, hai ragione. Uso anche Chrome e si aggiorna automaticamente senza nemmeno dirlo. Mi piace e ho iniziato ad adottare un meccanismo simile nel mio software (per uso opzionale). –

1

Nel mondo .NET si potrebbe dare un'occhiata alla distribuzione ClickOnce.

16

Forse, è possibile sfruttare il courgette algorithm, che è il meccanismo di aggiornamento utilizzato in Google Chrome. È davvero facile da usare e applicare alla tua infrastruttura. Attualmente funziona solo per i sistemi operativi Windows. Gli utenti Windows di Chrome ricevono aggiornamenti in piccoli blocchi, a differenza degli utenti Mac e Linux che continuano a ricevere i pezzi in dimensioni totali.

È possibile trovare il codice sorgente here nel repository SVN Chromium. È un algoritmo di compressione per applicare piccoli aggiornamenti a Google Chrome invece di inviare l'intera distribuzione per tutto il tempo. Piuttosto che spingere l'intero 10   MB all'utente, è possibile premere solo il diff delle modifiche.

Ulteriori informazioni su come funziona Courgette possono essere trovate here e il post del blog ufficiale su di esso here.

funziona così:

server: 
    hint = make_hint(original, update) 
    guess = make_guess(original, hint) 
    diff = bsdiff(concat(original, guess), update) 
    transmit hint, diff 

client 
    receive hint, diff 
    guess = make_guess(original, hint) 
    update = bspatch(concat(original, guess), diff) 

Quando si estrae la fonte, si può compilare come un file eseguibile (tasto destro compilare in Visual Studio) ed è possibile utilizzare l'applicazione in quel formare per il test:

utilizzati:

courgette -dis <executable_file> <binary_assembly_file> 
    courgette -asm <binary_assembly_file> <executable_file> 
    courgette -disadj <executable_file> <reference> <binary_assembly_file> 
    courgette -gen <v1> <v2> <patch> 
    courgette -apply <v1> <patch> <v2> 

Oppure puoi includerlo all'interno dell'applicazione e fare gli aggiornamenti da lì. È possibile imitare l'ambiente di aggiornamento automatico Omaha creando il proprio servizio che controlli periodicamente ed esegui Courgette.

+4

Ciao Mohamed - grazie - sembra un buon modo per ridurre la dimensione degli aggiornamenti. Tuttavia, sembra che Courgette abbia ancora bisogno di un "framework di aggiornamento" (sia Omama che una struttura fai-da-te). – Mark

+6

non correlato alla domanda. – kerem

+1

Puoi approfondire un po 'come compilare Google Courgette? Ho provato VS e GYP ma ancora senza fortuna. Grazie! –

29

Utilizziamo Omaha per i nostri prodotti. Inizialmente c'era un bel po 'di lavoro per cambiare URL e stringhe codificati. Anche il server non è open source, ma il protocollo è ben documentato quindi non è stato difficile creare un server compatibile utilizzando Google App Engine.

Non ci sono rimpianti con l'abbandonare la nostra vecchia soluzione di aggiornamento client e andare con Omaha.

+4

Ora un anno dopo, hai ulteriore esperienza da condividere? –

+2

Non proprio. Il sistema di aggiornamento funziona ancora senza manutenzione necessaria per l'anno passato. Il server riceve quasi una richiesta al secondo nei momenti di punta ... Omaha controlla gli aggiornamenti ogni 5 ore. Se la versione che il client ha non corrisponde a ciò che è pubblicato, invia un URL (ospitato da Rackspace) del programma di aggiornamento. Omaha scarica, verifica ed esegue il programma di aggiornamento. –

+1

sembra che Facebook usi anche Omaha: https://www.facebook.com/omaha/update.php –

1

UPDATE

  • Personalizzazione google Omaha non è così facile espacialy se non si ha conoscenza di C++, Python o COM.
  • Gli aggiornamenti non sono pubblicati, che spesso
  • Per implementare gli aggiornamenti manuali in qualsiasi lingua si può usare il com classes

Riprendi

  • google omaha è ancora vivo ma in modo pigro
  • bug sono stati corretti, ma non aspettatevi aggiornamenti rapidi
  • google omaha adatta per applicazioni Windows client supportati da Windows Vista e verso l'alto
  • lato server che sto utilizzando supporti brillare anche per il supporto multipiattaforma
  • una valutazione e crash sono supportati anche sul server
    • una valutazione vengono inviati con i buffer di protocollo google
    • movimentazione incidente è fatto con Breakpad

Personalmente preferirei google omaha invece di implementare la mia soluzione. Comunque parleremo di questo interno.

1

Ho appena trascorso alcuni giorni a configurare Omaha. È noioso, ma non impossibile. Ho riassunto i passaggi richiesti in un dettagliato tutorial. Io uso omaha-server per il back-end. Non posso ancora commentare sull'uso della produzione, ma aggiornerò questa risposta man mano che imparo di più.

+0

Hai abbastanza esperienza per commentare ora? – Alexander

+0

Sì, sto usando Omaha in produzione da circa 8 mesi. Funziona molto bene. –

Problemi correlati