Version du projet

Bonsoir,

Je prend le temps pour vous informez qu'un tout petit truc me trotte dans la tête depuis quelques mois.
En effet, depuis Xcode 2.0, lorsque je compile mon application, le champs "Version" n'est plus visible dans l'aperçu du Finder  :p -> http://www.eagle-of-liberty.com/conservatoir/OC_foutoir/gtpreviewfinder.png
Pourtant, d'autres applications (made in apple ou autre compagnie), affichent correctement ce champs ! -> http://www.eagle-of-liberty.com/conservatoir/OC_foutoir/previewfinder.png

Et puis hier soir, ça m'a fait clairement ch*er ! J'avous qu'avoir la version du soft sous les yeux c'est quand même utile ! qu'on soit pas obligé de lancer l'application et d'aller dans le about.
Alors j'ai alerté Ali, qui ne s'était pas encore rendu compte de ce problème. Alors nous avons cherché et évidemment, qui c'est qui a trouvé ? ....Allez je vous laisse deviner..
Toujours est-il que si vous voulez que la version de votre soft soit affiché dans le preview du finder et même dans le célèbre pomme-I (fenêtre d'informations), il vous faudra rajouter ds le "Info.plist" de votre projet :
<br />&lt;key&gt;CFBundleShortVersionString&lt;/key&gt;<br />&lt;string&gt;2.0&lt;/string&gt;


@+
Louka

Réponses

  • AliGatorAliGator Membre, Modérateur
    18:17 modifié #2
    Ben si vous avez parié sur qui a trouvé la soluce, vous aurez perdu !

    J'ai pas beaucoup de mérite, alors que je fouillais dans un plist existant, Renaud m'a devancé (je lui avait justement parlé de problème) et c'est lui qui m'a mis sur la piste des clés CFBundleShortVersionString et CFBundleLongVersionString qui étaient présentes dans les plist d'autres applis.

    J'ai testé, ça a marché, alors j'ai informé le p'tit louk. :(renaud):
  • 18:17 modifié #3
    dans 1140554507:

    J'ai testé, ça a marché, alors j'ai informé le p'tit louk. :(renaud):

    Pas obligé de me pisser dessus  :p
  • wiskywisky Membre
    18:17 modifié #4
    dans 1140610308:

    dans 1140554507:

    J'ai testé, ça a marché, alors j'ai informé le p'tit louk. :(renaud):

    Pas obligé de me pisser dessus  :p

    c'est pour ça qu'il l'a fait  :P
  • 18:17 modifié #5
    dans 1140617919:

    dans 1140610308:

    dans 1140554507:

    J'ai testé, ça a marché, alors j'ai informé le p'tit louk. :(renaud):

    Pas obligé de me pisser dessus  :p

    c'est pour ça qu'il l'a fait  :P

    macintosh_plus  :(renaud): macintosh_plus  :(renaud): macintosh_plus  :(renaud): macintosh_plus  :(renaud): macintosh_plus  :(renaud):
  • UniXUniX Membre
    18:17 modifié #6
    Salut.

    Je resors un peu le sujet ....
    Une question liée : si je veux obtenir la version de l'appli dans mon code, suis-je obligé de charger le info.plist et lire le bon item du dico, ou il y a une commande cocoa qui fait ça ?
  • aranaudaranaud Membre
    18:17 modifié #7
    Moi je fais comme çà 
    <br />NSBundle *bundle = [NSBundle bundleForClass:[self class]];<br />NSString *version = [bundle objectForInfoDictionaryKey:@&quot;CFBundleVersion&quot;];<br />
    
  • elfelf Membre
    18:17 modifié #8
    idem, sauf que je bundle le tout en un appel et utilise mainBundle qui me semble plus correct que bundleForClass etant donné que pas tout les bundles ont un info.plist mais que tout les mainbundle en ont!:

    NSString *version = [[NSBundle mainBundle] objectForInfoDictionaryKey:@&quot;CFBundleVersion&quot;];
    
  • fouffouf Membre
    18:17 modifié #9
    Je crois que tu vas avoir des pb si jamais tu utilises cette méthode dans autre chose qu'une application (une fenetre de prefs, un plug-in pour une autre application, ...). En effet dans ce cas là , [NSBundle mainBundle] retourne le bundle du processus (une application) d'où la commande est appelée. Donc, en gros, si tu fais ca pour une fenetre de prefs, tu vas te retrouver avec le bundle de l'appli Préférences Systèmes et non celui du plug-in.

    Pour palier à  cela, la méthode de aranaud est parfaite ....
  • elfelf Membre
    18:17 modifié #10
    Ah, OK. Bon moi je ne fais que des apps, donc cette methode me conviens...
  • 18:17 modifié #11
    dans 1147184056:

    Pour palier à  cela, la méthode de aranaud est parfaite ....


    Pour ma part je préfère définir définir deux variables "globales": une avec l'identifiant du bundle, l'autre qui est le bundle en cours. Car si le problème du bundle se pose pour avoir le plist, c'est qu'il se posera aussi pour les phrases localisées, différentes ressources, donc autant se prémacher le travail et créer d'office une variable globale qui servira dans tous ces cas.
Connectez-vous ou Inscrivez-vous pour répondre.