web-dev-qa-db-fra.com

Quelle est l'expérience de Google 'Omaha' (leur moteur de mise à jour automatique pour Chrome)?

Le mécanisme de mise à jour automatique utilisé par Google Chrome sous la forme Omaha a été ouvert.

Cela semble assez compliqué et difficile à configurer pour ceux qui ne sont pas Google. Quelle est l'expérience d'utilisation d'Omaha dans les projets? Peut-il être recommandé?

59
Mark

Nous utilisons Omaha pour nos produits. Au début, il y avait beaucoup de travail pour changer les URL et les chaînes codées en dur. De plus, le serveur n'est pas open source, mais le protocole est bien documenté, il n'a donc pas été difficile de créer un serveur compatible à l'aide de Google App Engine.

Nous ne regrettons pas d'avoir abandonné notre ancienne solution de mise à jour client et de partir avec Omaha.

30
Bevan Collins

Peut-être pouvez-vous utiliser l'algorithme courgette , qui est le mécanisme de mise à jour utilisé dans Google Chrome . Il est très facile à utiliser et à appliquer à votre infrastructure. Actuellement, cela ne fonctionne que pour les systèmes d'exploitation Windows. Les utilisateurs Windows de Chrome reçoivent les mises à jour par petits morceaux, contrairement aux utilisateurs de Mac et Linux qui reçoivent toujours les morceaux en taille totale.

Vous pouvez trouver le code source ici dans le répertoire Chromium SVN. C’est un algorithme de compression qui consiste à appliquer de petites mises à jour à Google Chrome au lieu d’envoyer toute la distribution en permanence. Plutôt que de transmettre la totalité des 10 Mo à l'utilisateur, vous pouvez uniquement appliquer le diff des modifications.

Vous trouverez plus d’informations sur le fonctionnement de Courgette ici et sur le blog officiel à ce sujet ici .

Cela fonctionne comme ceci:

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)

Lorsque vous extrayez le source, vous pouvez le compiler en tant qu'exécutable (compiler avec un clic droit dans Visual Studio) et vous pouvez utiliser l'application sous cette forme pour tester:

Utilisation:

  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>

Ou bien, vous pouvez inclure cela dans votre application et faire les mises à jour à partir de là. Vous pouvez imiter l'environnement de mise à jour automatique d'Omaha en créant votre propre service que vous vérifiez périodiquement et exécutez Courgette.

16
Mohamed Mansour

METTRE &AGRAVE; JOUR

  • Personnaliser google omaha n’est pas une tâche facile si vous n’avez aucune connaissance de c ++, python ou com.
  • Les mises à jour ne sont pas publiées aussi fréquemment
  • Pour mettre en œuvre des mises à jour manuelles dans n’importe quelle langue, vous pouvez utiliser les classes com

CV 

  • google omaha est toujours en vie mais de manière paresseuse
  • les bugs sont corrigés mais ne vous attendez pas à des correctifs
  • google omaha convient aux applications clientes Windows prises en charge à partir de Windows Vista et versions ultérieures
  • côté serveur, j'utilise aussi des supports qui étincellent pour le support crossplatform
  • les réactions et les blocages sont également pris en charge sur le serveur
    • les retours sont envoyés avec les tampons de protocole google
    • la gestion des collisions se fait avec le bloc

Personnellement, je choisirais google omaha au lieu de mettre en œuvre ma propre solution. Cependant, nous discuterons de ce problème interne.

2
NtFreX

Dans le monde .NET, vous pouvez jeter un oeil sur ClickOnce deployment.

1
Jakub Konecki

Je viens de passer quelques jours à configurer Omaha. C'est fastidieux, mais pas impossible. J'ai résumé les étapes requises dans un tutorial détaillé . J'utilise omaha-server pour le backend. Je ne peux pas encore commenter sur l'utilisation de la production, mais mettrai à jour cette réponse à mesure que j'en apprends plus.

1
Michael Herrmann

Un mécanisme de mise à jour automatique est quelque chose que je me codifierais personnellement et que j'ai toujours dans le passé. À moins que vous n'ayez une application de plusieurs gigaoctets et que vous ne vouliez télécharger que des morceaux, utilisez simplement votre propre code/installateur. Cela dit, je n'ai pas du tout consulté la bibliothèque open source de Google ... et je ne savais même pas qu'elle existait. Je ne peux pas imaginer offrir quelque chose de supérieur à ce que vous pourriez coder vous-même, et avec votre propre code, vous n'êtes soumis à aucune restriction de licence.

0
dyasta