UpSoft, centralisation des mises a jour
fouf
Membre
Bonjour a tous.
Ce que je vous presente aujourd'hui est un ensemble d'applis qui permet de centraliser les mises a jours des applications. Il s'agit en fait d'un sorte de clone de Software Update mais utilisable par toutes les applications.
Il s'agit en fait d'un ensemble d'applis qui en fonctionnent de concert : un helper, une prefpane, une appli qui affiche la liste des applis a mettre a jour, les telecharge et les installe et enfin un framework pour s'enregistrer.
Voila donc UpSoft (la prefpane est a telecharger ici).
Pour faire le petit test, je vous propose d'utiliser une version un peu modifiee de Geodes.
Alors, comment implementer UpSoft pour son appli ?
C'est assez simple :
1 - ajoutez le framework UpSoftBridge et importez le fichier UpSoftApplicationBridge.h
2 - implementez deux methodes : currentVersionDate qui va retourner la date de la version actuelle de l'appli et versionPlistPath qui va retourner le chemin du fichier d'info qui va servir a recuperer les infos des nouvelles versions. Par exemple :
3 - creez le fichier d'info avec UpSoft Plist Generator et mettez la sur un serveur, a l'adresse indiquee par versionPlistPath.
4 - appelez les methodes d'enregistrement et de de declaration :
Et voila ...
Normalement ca devrait etre bon.
Pour le test, je vois propose donc de telecharger la pref pane, de cliquer sur "Launch UpSoft Helper" puis de lancer Geodes et enfin de faire une recherche des mises a jours.
Dites-moi ce que vous en pensez (j'ai bien conscience qu'il manque des choses, mais je vois pas trop quoi ...)
Merci d'avance :fouf):
[edit]
J'ai oublie de mettre le helper en LSUIElement = 1. Ca ne change rien au fonctionnement, mais c'est plus pratique pour le debuggage ...
Ce que je vous presente aujourd'hui est un ensemble d'applis qui permet de centraliser les mises a jours des applications. Il s'agit en fait d'un sorte de clone de Software Update mais utilisable par toutes les applications.
Il s'agit en fait d'un ensemble d'applis qui en fonctionnent de concert : un helper, une prefpane, une appli qui affiche la liste des applis a mettre a jour, les telecharge et les installe et enfin un framework pour s'enregistrer.
Voila donc UpSoft (la prefpane est a telecharger ici).
Pour faire le petit test, je vous propose d'utiliser une version un peu modifiee de Geodes.
Alors, comment implementer UpSoft pour son appli ?
C'est assez simple :
1 - ajoutez le framework UpSoftBridge et importez le fichier UpSoftApplicationBridge.h
2 - implementez deux methodes : currentVersionDate qui va retourner la date de la version actuelle de l'appli et versionPlistPath qui va retourner le chemin du fichier d'info qui va servir a recuperer les infos des nouvelles versions. Par exemple :
- (NSDate *)currentVersionDate<br />{<br /> NSLog(@"currentVersionDate asked");<br /> return [NSCalendarDate dateWithYear:2006 month:04 day:11 hour:12 minute:00 second:00 timeZone:[NSTimeZone timeZoneWithAbbreviation:@"EST"]];<br />}<br /><br />- (NSURL *)versionPlistPath<br />{<br /> NSLog(@"versionPlistPath asked ; %@", [NSURL URLWithString:@"raphaelbost.free.fr/upsoft.plist"]);<br /> return [NSURL URLWithString:@"http://raphaelbost.free.fr/upsoft.plist"];<br />}<br />
3 - creez le fichier d'info avec UpSoft Plist Generator et mettez la sur un serveur, a l'adresse indiquee par versionPlistPath.
4 - appelez les methodes d'enregistrement et de de declaration :
<br />// enregistrement<br />[UpSoftApplicationBridge registerApplication];<br /><br />// declaration<br />[UpSoftApplicationBridge setDelegate:self];<br />[UpSoftApplicationBridge updateAppInfos];<br />
Et voila ...
Normalement ca devrait etre bon.
Pour le test, je vois propose donc de telecharger la pref pane, de cliquer sur "Launch UpSoft Helper" puis de lancer Geodes et enfin de faire une recherche des mises a jours.
Dites-moi ce que vous en pensez (j'ai bien conscience qu'il manque des choses, mais je vois pas trop quoi ...)
Merci d'avance :fouf):
[edit]
J'ai oublie de mettre le helper en LSUIElement = 1. Ca ne change rien au fonctionnement, mais c'est plus pratique pour le debuggage ...
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Je suis prenneur pour ma prochaine appli, pourquoi pas.
par contre :
1) Pourquoi avoir à lancer le Helper à la main ?
2) Est-ce qu'on ne pourrais pas automatiquement proposer l'installation du PrefPane s'il n'est pas installé ?
3) Est-ce que ton ensemble UpSoft ne pourrais pas *aussi* fonctionner sans le PrefPane, c'est à dire en fournissant une action pour chercher les mises à jour ? Comme ça on crée un menuitem dans le menu de l'appli "Search for updates?" qu'on relie à cette action et ça permet de chercher les mises à jour pour le soft qu'on utilise en particulier, au lieu de passer par le prefPane.
(Indication avec un BOOL si oui où non une update est dispo + URL du fichier à updater, par ex)
Ca permettrait, en plus d'avoir un PrefPane centralisant les updates des autres applis que celles d'Apple, de pouvoir gérer aussi les updates de nos softs individuellements et proposer un système de mise à jour dans nos softs sans réinventer la roue.
1) c'est juste pour le debuggage, et dans le futur, le helper sera lancé dès le premier chargement de la prefpane et sera ajouté aux éléments d'ouverture de session.
2) si, faut juste que je trouve un moyen intelligent de le faire ... (comme Growl par exemple)
3) C'est deja fait, mais je ne l'ai pas mentionné dans mon post (tu n'as pas regardé le framework toi :P). Il s'agit de la methode de classe + (BOOL)updateAppInfosAndDetectNewVersion.
Merci a toi ...
Dans le même genre il existe Sparkle : http://www.andymatuschak.org/pages/sparkle
La différence est que ça ne centralise pas les mises à jour. Mais peut-être y trouvera-tu des idées de fonctionnalités à ajouter à ton soft.
A+
Honnêtement je serais plus prenneur d'un truc comme Sparkle que d'un truc avec le prefpane pour centraliser les MaJ comme le tien.
Donc si tu veux que dans ma prochaine app j'adopte UpSoft, t'as intérêt à y intégrer les mêmes fonctionnalités que Sparkle A savoir autant check si nouvelle version que download de cette dernière, self-update, etc
J'avais à la base essayer de créer un truc dans le genre de UpSoft mais quand j'ai découvert sparkle j'ai laissl tomber!
Et si tu veux mon avis, Software Update de Apple, il est asser mal fouttu!
Et ça me fait chier de me noyer dans les sources de growl, lol
1) chargement d'un dictionary via une URL
2) comparaison des versions
3) si besoin téléchargement de la mise à jour
4) si téléchargement, installation de la mise à jour
c'est faisable avec 1 objet et c'est super pratique. En plus cet objet est réutilisable.
ma question compte toujours...
Oui, c'est en OpenSource, mais je ne pense pas que cela puisse vraiment t'aider d'avoir ca entre les mains, puisqu'il s'agit juste d'une copie conforme d'une partie du code de Growl. Je te conseille donc de le télécharger, c'est très bien documenté et c'est bien plus clair que mon code.
Mais si tu insiste, si j'ai un peu de temps, je vais essayer de nettoyer un peu et de te filer tout ca ...
car j'ai essayé de fouiller dans growl, mais je m'y perds un peu!
merci,
elf
En tant qu'utilisateur ça me soûle de devoir faire 50 mises à jour différente. J'ai déjà essayer de faire ça avec un site Web + logiciel de MAJ + ressource pour développeur. Mais ça n'a pas pris
Maintenant j'utilise un système tout simple: