J'adore les applications capables de se mettre à jour sans aucun effort de l'utilisateur (pensez: Sparkle framework pour Mac). Existe-t-il un code/une bibliothèque que je peux utiliser pour le faire dans une application Qt, sans avoir à me soucier des détails du système d'exploitation?
Au moins pour les binaires Windows, Mac et Linux appartenant à l'utilisateur.
Je pourrais intégrer Sparkle sur la version Mac, coder quelque chose pour Linux (uniquement pour un binaire autonome appartenant à l'utilisateur; je ne plaisanterai pas avec distribution packaging, si mon programme est déjà fourni), pour m'aider du côté de Windows, mais c'est horriblement douloureux.
OK, alors je suppose que je le prends comme une "voie non (multi-plateforme)". C'est dommage!
Ce n’est pas une solution complète, mais un outil multiplate-forme (Windows, Mac, Linux) permettant de créer des packages de mise à jour automatique et de les installer est disponible à l’adresse https://github.com/mendeley/Update-Installer . Cet outil ne traite pas de la publication des mises à jour ni de leur téléchargement.
Ceci a été écrit pour être utilisé avec une application basée sur Qt mais pour rendre le programme d'installation de mise à jour petit, autonome et facile à construire, le programme d'installation utilise uniquement les bibliothèques système standard (environnement d'exécution C++, pthreads/libz/libbz2 sous Linux/Mac, API Win32 sous Windows , Cocoa sur Mac, GTK avec repli sur Linux). Cela simplifie la fourniture de mises à jour comprenant de nouvelles versions de Qt et d'autres bibliothèques non système sur lesquelles votre application peut dépendre.
Avant d’envisager cela, je suggérerais:
Sparkle
sur Mac, Google's Omaha
sur Windows ou sur des systèmes de mise à jour automatique intégrés aux infrastructures d'installation courantes (par exemple, InstallShield). Je n'ai pas essayé BitRock.Quelques autres notes sur la création d'un programme de mise à jour:
Plug sans vergogne: Fervor , une application automatique multiplateforme simple (basée sur Qt) inspirée de Sparkle.
Prise sans vergogne: c'est une question relativement ancienne, mais j'ai pensé qu'il pourrait être utile de mentionner une bibliothèque que j'ai créée récemment, que j'ai nommée "QSimpleUpdater". En plus de vous avertir s'il existe une version plus récente, il vous permet de télécharger le journal des modifications dans n'importe quel format (HTML ou RTF, par exemple) et de télécharger les mises à jour directement à partir de votre application via une boîte de dialogue.
Comme on peut s'y attendre d'un projet Qt, il fonctionne sur toutes les plateformes prises en charge par Qt (testé sous Windows, Mac et Linux).
Liens:
Capture d'écran:
Bien que cela fonctionne un peu différemment de Sparkle, BitRock InstallBuilde r contient un autoupdater écrit en Qt pouvant être utilisé indépendamment (disclaimer, je suis le développeur BitRock original). C'est une application commerciale, mais nous avons des licences gratuites pour les projets open source.
Vous pouvez utiliser UpdateNode qui vous donne toutes les possibilités de mettre à jour votre logiciel. Il utilise un client Qt multiplateforme et est gratuit pour Open Source!
UPDATE Nous venons de faire une analyse plus poussée à ce sujet et aimons beaucoup cette solution:
Avantages:
Les inconvénients:
En conclusion, comme cette solution est assez nouvelle, je pense qu’il ya beaucoup de potentiel ici. Je vais certainement l'utiliser dans mon projet et j'attends plus d'eux! Pouces vers le haut!
Le blogMélanger Cocoa et Qtpeut résoudre le problème pour la plate-forme Mac.
J'ai trouvé WebUpdate très utile, bien que ce soit écrit avec les wxWidgets. Mais ne vous inquiétez pas, c'est une application séparée qui gère vos mises à jour. Les étapes pour l'intégrer sont assez simples - il suffit d'écrire deux fichiers XML et d'exécuter le programme de mise à jour. Et oui, c'est multi-plateforme.
L'avantage est qu'il téléchargera et décompressera/installera automatiquement tout ce dont vous avez besoin et ne fournira pas simplement une fenêtre contextuelle avec une notification concernant une nouvelle version et un lien pour le télécharger. Une autre chose que vous pouvez faire est des actions personnalisables.
La page principale du projet est ici , vous pouvez lire le docs ou consulter le tutoriel officiel _.
J'ai développé une bibliothèque de mise à jour automatique qui fonctionne à merveille sous Mac OS X, Linux et pratiquement tous les Unix permettant de dissocier un fichier alors qu'il est toujours ouvert. La raison en est que j'ai simplement extrait le package téléchargé en plus de l'application existante. Malheureusement, comme je m'appuyais sur cette fonctionnalité, j'ai rencontré des problèmes sous Windows, car Windows ne vous permettait pas de dissocier un fichier ouvert.
La seule alternative que j'ai pu trouver est d'utiliser MoveFileEx avec l'indicateur de remplacement au redémarrage, mais c'est affreux.
Cependant, renommer le répertoire de travail de l'application fonctionne sous Windows 7 et Windows XP. Je n'ai pas encore essayé Windows Vista.
Je vous suggère de lire sur le plugin et comment les créer et les utiliser. Si votre architecture d’application est modulaire et divisée en différents plugins Consultez l'utilitaire de mise à jour automatique de Google http://code.google.com/p/omaha/ . Nous utilisons ceci.
Thibault Cuvelier est en train de rédiger un tutoriel (en français) pour développer un programme de mise à jour. Je sais que les explications sont en français (et tout le monde ne comprend pas le français), mais je pense que cela peut être lu par un traducteur Web du type Google Translate . Avec cela, vous aurez un programme de mise à jour multi-plateforme, mais vous devez l'écrire vous-même.
Pour ce que je sais, la seule partie du programme de mise à jour qui est expliquée dans le tutoriel est la partie de téléchargement de fichier. Si cela peut vous aider, reportez-vous au tutoriel,Un updater avec Qt.
J'espère que ça aide.