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é?
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.
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.
METTRE &AGRAVE; JOUR
CV
Personnellement, je choisirais google omaha au lieu de mettre en œuvre ma propre solution. Cependant, nous discuterons de ce problème interne.
Dans le monde .NET, vous pouvez jeter un oeil sur ClickOnce deployment.
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.
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.