UpSoft, centralisation des mises a jour

fouffouf Membre
juin 2006 modifié dans Vos applications #1
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 :
- (NSDate *)currentVersionDate<br />{<br />	NSLog(@&quot;currentVersionDate asked&quot;);<br />	return [NSCalendarDate dateWithYear:2006 month:04 day:11 hour:12 minute:00 second:00 timeZone:[NSTimeZone timeZoneWithAbbreviation:@&quot;EST&quot;]];<br />}<br /><br />- (NSURL *)versionPlistPath<br />{<br />	NSLog(@&quot;versionPlistPath asked ; %@&quot;, [NSURL URLWithString:@&quot;raphaelbost.free.fr/upsoft.plist&quot;]);<br />	return [NSURL URLWithString:@&quot;http://raphaelbost.free.fr/upsoft.plist&quot;];<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 ...

Réponses

  • AliGatorAliGator Membre, Modérateur
    00:37 modifié #2
    Salut !

    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.
  • fouffouf Membre
    00:37 modifié #3
    Alors je réponds aux questions :

    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 ...
  • MathMath Membre
    00:37 modifié #4
    Salut,

    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+
  • AliGatorAliGator Membre, Modérateur
    00:37 modifié #5
    Ah oui en effet.

    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 :D A savoir autant check si nouvelle version que download de cette dernière, self-update, etc :)
  • elfelf Membre
    00:37 modifié #6
    Moi j'utilise aussi Sparkle dans mes softs! C?est serieusement très bien foutu!

    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!
  • elfelf Membre
    00:37 modifié #7
    encore un truc? ton truc, c'est open-source? car je compte faire un truc dans le même genre mais avec un différent but. helper-prefpane-framework
    Et ça me fait chier de me noyer dans les sources de growl, lol
  • wiskywisky Membre
    00:37 modifié #8
    Il y a plus simple:
    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.
  • elfelf Membre
    00:37 modifié #9
    fouf?

    ma question compte toujours...
  • fouffouf Membre
    00:37 modifié #10
    Excuse, j'etais en vacances.

    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 ...
  • elfelf Membre
    00:37 modifié #11
    je suis sur que ça m'aiderais vraiment beaucoups!

    car j'ai essayé de fouiller dans growl, mais je m'y perds un peu!

    merci,
    elf
  • wiskywisky Membre
    décembre 2007 modifié #12
    L'avantage de la centralisation des mises à  jour est plus pour les utilisateurs. Qui peuvent mettre à  jour tous leurs soft non apple via un seul et même endroit !

    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:
    <br />NSDictionary * versionInternet = [NSDictionary dictionaryWithContentsOfURL:[NSURL URLWithString:@&quot;http://www.monsit.com/update/monSoft.plist&quot;]];<br /><br />if(versionInternet){ //traitement de la version<br /><br /><br />}else{<br />//echec du chargement. Pas d&#39;accès Internet !!!<br />}<br />
    

Connectez-vous ou Inscrivez-vous pour répondre.