Mac App Store : Apple limite les dossiers accessibles aux développeurs

Nicolas Furno |
Alors que la sortie du Mac App Store se rapproche à grands pas (lire : Mac OS X 10.6.6 quasiment finalisé), Apple multiplie les conseils sur son site dédié aux développeurs. Le dernier en date évoque la gestion des fichiers. Règle n°1 : l'application doit obligatoirement être installée dans le dossier "/Applications". Tous les autres fichiers générés par les applications peuvent être dans trois dossiers suivants :

  • ~/Bibliotheque/Application Support/identifiant-application

  • ~/Bibliotheque/identifiant-application

  • ~/Bibliotheque/Caches/identifiant-application


Le nom du dossier contenant les informations enregistrées, noté ici identifiant-application peut être soit le nom de l'application, le nom de l'éditeur ou l'identifiant du logiciel. Il faut absolument mettre un nom identique à ceux fournis dans iTunes Connect.

Deux exceptions à cette règle : les fichiers explicitement sauvegardés par les utilisateurs dans un autre dossier et les fichiers musicaux, vidéos ou photos qui peuvent être sauvegardés dans les dossiers correspondants. Apple évoque aussi le cas des données de calendrier ou de carnet d'adresses qui seront stockées directement dans les bases de données correspondantes. L'écriture de fichiers temporaires est permise, mais uniquement via une API publique.

Ces règles montrent qu'Apple a décidé de contraindre les développeurs à travailler plus proprement. Certaines applications avaient tendance à placer des fichiers un peu n'importe où, ce qui rendait leur désinstallation complète difficile. Ce nouveau système permettra au Mac App Store de gérer plus simplement l'installation ou la suppression des applications. Néanmoins, ces règles bloquent de fait toutes les applications qui modifiaient des fichiers système comme, par exemple, les logiciels de virtualisation.

Sur le même sujet :
- Apple poste les règles de conduite pour le Mac App Store
avatar ziggyspider | 
La bibliothèque est celle de l'utilisateur ou celle à la racine (ou les 2) ? Si c'est celle utilisateur, les applications ne seront pas fonctionnelles dans toutes les sessions/tous les utilisateurs… Pas sympa ! Et ils ont oublié "~/Bibliotheque/Preferences" … ça peut servir !
avatar Nicolas Furno | 
Il s'agit toujours de la bibliothèque de l'utilisateur. C'est déjà le fonctionnement de la majeure partie des applications Mac, en fait. Et rappelons que les applications du Mac App Store seront protégées par un compte App Store.
avatar USB09 | 
Si on perd ses apps pourrait on les retélécharger sur le store ?
avatar Lio70 | 
@ ziggyspider Ils presentent seulement la structure a respecter, peu importe le nombre d'utilisateurs. Donc ce sont ces 3 repertoires-la pour chaque utilisateur. Quant aux preferences, je suppose que c'est egalement permis. Et effectivement cela va obliger certains developpeurs a travailler proprement. Rien de pire quune app mal developpee pour ruiner la reputation du Mac. Idem pour l'iPhone, en passant...
avatar egw | 
Evidemment que les applications ont accès aux préférences. Les fichiers de préférences ne sont juste pas manipulés directement par l'application ; elles accèdent aux préférences via les API adéquates.
avatar elamapi | 
C'est une bonne chose. Marre des applis qui me pose 250 fichiers dans 350 répertoires partout sur mon DD.
avatar LaurentR | 
@ usb09 : Si c'est comme l'App Store, pas de soucis.
avatar Dr Troy | 
@ ziggyspider : Précision, le "~" représente la racine du dossier utilisateur actuel dans le monde Unix. En tout cas ce n'est pas une mauvaise chose (pas le Mac Store, cette règle...), j'ai du mal avec les applications qui mettent des fichiers dans tous les sens (même si Spotlight est la).
avatar YannK | 
Ha ben aucune chance d'y voir une app HP alors… Parce que dans le genre foutre des petites merdes un peu partout, ils excellent (et vont jusqu'à foutre 3 icônes dans le dock sans demander…) quand on installe une de leurs imprimantes…
avatar chenzo57 | 
Moi je me pose une question : si par exemple une grosse application genre office etc est ce que Apple appliquerait les même règles, je ne suis pas connaisseur en la matière mais modifier une grosse application ( si par exemple elle ne répondait pas aux critère d'Apple ) ça devrait prendre du temps non ?
avatar ziggyspider | 
[quote]Dr Troy [03/12/2010 12:06] [/quote] @ ziggyspider : Précision, le "~" représente la racine du dossier utilisateur actuel dans le monde Unix. C'est bien ce que je redoutais. Donc, si pour une raison ou pour une autre j'ai 2 session sur mon disque, une application installée dans une session ne sera pas obligatoirement fonctionnelle dans la seconde. En tout cas, tout ce qui est dans la bibliothèque ne sera pas accessible. Le choix de la bibliothèque utilisateur n'a rien à voir avec le bon ordre dans lequel s'installe une appli, c'est bien pour vendre une licence à chaque utilisateur d'un Mac.
avatar thierry61 | 
"c'est bien pour vendre une licence à chaque utilisateur d'un Mac." Ben, un licence logicielle individuelle = un utilisateur = une session; ça a toujours marché comme ça me semble t-il. Ce n'est pas pour rien que des licences familiales 5 postes sont proposées pour certains softs. Mais bon... si la formule du Mac App store ne convient pas; pas de pb; après tout, ce ne sera qu'un canal de vente parmi d'autres.
avatar Ali Baba | 
J'espère juste que l'utilisateur pourra toujours décider de la placer où il veut.
avatar thebarty | 
A mon avis, cela veut juste dire que les applis n'auront accès qu'à ces 3 répertoires, mais sur les deux niveaux. Pour mémoire, prenez un screensaver, on contextual menu item ou un pref pane et placez le sur le bureau. puis faites un double clic dessus. Que fait alors l'OS ?.... Il demande si c'est au niveau utilisateur ou commun à tous. Il ne demande pas dans quel répertoire. Je vois bien Apple généraliser cela aux applis.
avatar Dr Troy | 
@ Thierry : le nombre de postes et le nombre de sessions sur un même poste sont deux choses différentes (c'est comme si tu interdisais une autre personne d'utiliser les softs sous licence sur ton ordinateur). @ ziggyspider : Oui ou alors c'est juste pour séparer les fichiers de préférences entre chaque utilisateur (comportement "normal" d'une application).
avatar magicstick | 
Est-il toujours possible alors de developper une application qui ajoute un LaunchDaemon ou agent dans /Library par exemple? et de le proposer sur le Mac App store?
avatar Artanis | 
C'est définitif, on verra pas un programme Adobe sur l'AppStore...
avatar Artanis | 
@ ziggyspider: C'est déjà le cas pour les applications bien codées. Par exemple, pour Adium, j'ai un tas de fichiers dans ~/Library/Application Support/Adium 2.0 Ca veut pas dire que je peux pas utiliser l'application avec un autre compte, juste que les données personnelles des deux comptes ne sont pas stockées dans le même dossier, ce qui est plutôt une bonne chose, d'après moi.
avatar iJack | 
@ziggyspider "...une application installée dans une session..." L'appli s'installe dans le dossier "/Applications", comme dit dans la news (4ème ligne). C'est un lieu standard, visible par conséquent par tous les utilisateurs de la machine. Donc, tout utilisateur la verra, mais tous les fichiers crées/gérés par ladite application seront propres à l'utilisateur. Nicolas & les autres, je n'ai pas dit de bétises ? @chenzo57 Concernant Office, celui-ci est (était en tout cas) équipé d'une protection visant à interdire qu'une copie tourne sur un autre poste du réseau familial. Apple laissera-t-il passer ce dispositif... Les gros éditeurs sont-ils intéressés, et adapteront-ils leurs softs pour profiter de ce moyen de vente (30% à donner à Apple quand même) ? Rien n'est moins sûr ? Pour revenir à la news, je suis plutôt pour ces règles, cela évitera le pb qui m'est arrivé : Age of Mythologie (Microsoft) ne fonctionnait pas avec les utilisateurs 'contrôlés', ce jeux essayant sans succès de créer ses fichiers temporaires dans "/Applications", mais un tel utilisateur n'est qu'en READ ONLY sur ce dossier :( Solution (merci le web) : recopier le jeux dans les différents "~/Applications" des utilisateurs qui le souhaitent... 1Go par utilisateur, merci la perte de place...
avatar Frodon | 
@ziggyspider Arretes de stresser pour rien. Lorsque tu lancera l'appli sur une autre session, elle stockera les preferences du nouvelle utilisateur dans sa bibliothèque (celle du nouvel utilisateur), puisque l'appli a le droit d'écrire dans ~/Library, soit dans la bibliothèque de n'importe quel utilisateur qui se connecte. Toutes les applications bien écrites font déjà ça aujourd'hui, ca permet d'avori des preferences différentes par utilisateur, ce qui est la logique même.
avatar Frodon | 
@magictsick Non les trucs qui ajoute des composants systèmes, tel que des LaunchDeamons, ou des Kernel Extensions (.kext) ou autres trucs du genre, ne seront pas accepté sur le Mac AppStore. Evidement rien n'empêche de les distribuer via les moyens de distributions classiques (magasins, internet...etc)
avatar Philactere | 
En effet tout ceci me semble bien explicite : - Les applications dans le dossier /Applications : Au niveau de système, accessible en lecture par chaque utilisateur - Les différentes préférences, caches, etc. dans les dossiers adéquats de chaque utilisateur. Que du propre en ordre comme les choses auraient toujours dû êtres. Et comme dit Frodon, pour les services et autres extensions du kernel c'est à voir ailleurs que sur l'App store puisqu'on n'est plus dans de l'appli "tout public".
avatar Switcher | 
Il y a quelques années de cela, Mac OS se distinguait largement de Windows du fait qu'une application installée venait pas foutre 50 éléments à 50 endroits à la fois. Avec la nouvelle arborescence du système, on a un peu perdu ça - d'où pléthore d'apps (freeware, shareware, etc.) qui vous promettent de [i]"faire le ménage, juré craché"[/i] dans les bibliothèques… Je trouve donc bien qu'Apple rappelle ses impératifs de simplicité et - oui - de bridage de l'appli histoire qu'elle ne vienne pas mettre le boxon dans l'OS.
avatar tdml | 
Il me semble que ce serait plutôt le boulot d'Apple de fournir un désinstalleur. C'est une fonction qui manque depuis plus de 10 ans maintenant. Alors du coup, on choisit plutôt d'empêcher les développeurs de faire leur cuisine. Dans la majorité des cas, il n'y a pas de raison de vouloir accéder à d'autres répertoires, mais dès qu'on fait de l'utilitaire, ces restrictions sont pénibles. Apple, remets-toi au boulot et développe ton OS plutôt que de ne faire QUE du marketing et de la stratégie.
avatar rom54 | 
C'est vraiment une bonne chose que de contraindre les applications à arrêter d'éparpiller des fichiers partout. Ne serait ce qu'en terme de sécurité... Apple perçoit certainement que beaucoup de developpeurs, parfois amateurs (encore que les amateurs fassent souvent du meilleur travail que les grosses boites), parfois venus d'autres horizons, vont débarquer en force avec l'App Store. Si ces developpements ne s'adaptent pas parfaitement à l'OS on va avoir rapidement des catastrophes et un risque de foisonnement d'applications malsaines: troyens et applications bâclées, qui une fois installées corrompent le fonctionnement de la machine ou des autres applications parce qu'elle remplacent une librairie par une autre sans crier gare... Apple fourni tout ce qui est nécessaire, API en tete. Alors il n'y a aucune justification pour que des applications utilisateurs (pas des drivers donc) aillent installer quoique ce soit dans les dossiers autres que /Applications, ~/Bibliotheque/. Si on prend l'exemple des applications Adobe, et la pire d'entre elle Acrobat Reader, ces cochonneries placent des fichiers aux noms ésotériques n'importe ou: c'est injustifiable! @ tdml: je suis d'accord sur le principe, mais selon les guidelines d'Apple, une application devrait s'installer par glisser-déposer sur le dossier /Applications ou ~/Applications (eh oui y a un dossiers Applications local au compte utilisateur). La desinstallation devant alors se faire par simple mise a la poubelle de l'application. Pour celles nécessitant de placer des fichiers ailleurs, Apple fournit un installeur/desinstalleur aux travers des paquets .pkg. Le seul problème c'est qu'il s'agit de recommandations qui laissent le developpeur libre de faire ce qu'il veut, et on le voit dans le cas des applications multiplateformes (Adobe et Microsoft en tête) , ce n'est pas toujours respecté! On pourrait alors imaginer qu'Apple impose un seul moyen d'installer/desisntaller une application. Ce serait plus user-friendly... @ YannK Non pas de drivers. De toutes facons, Apple distribut déja les drivers lors des mise-à-jours systéme. Apres les applications utilisant les drivers, elles pourront etre presente sur l'Appstore, mais devront respecter les régles. Donc effectivement HP va avoir du mal... Si Apple met des contraintes de ce genre, comme la necessité d'adherer a un programme développeur payant pour distribuer ses applications, ce n'est ni pour avoir le controle absolu sur tout ni pour faire des benefices. C'est actuellement le seul système efficace contre la proliferation de malware, toutes les autres solutions ayant échouées, a commencer par les antivrus commerciaux qui vous taxent 100$ par ans... La seule chose a déplorer c'est d'être limité à l'objective-c (bien qu'o puisse imaginer un generateur capable de traduire le programme en objective-c comme le fait Eiffel ou CaML avec C). Mais la encore c'est logique, car les outis d'analyse du code d'Apple sont fait pour des programmes en objective-c...
avatar iJack | 
@tdml (pour la partie désinstallation) Cela ne coûterait effectivement pas cher à réaliser pour Apple, car MacOs ne possède pas de base de registre, qui est (était en tout cas) un véritable casse-tête sous Windows (je ne sais pas si ce concept perdure sous Seven...). Je suppose qu'il faudrait donner des royalties à Microsoft pour pouvoir en disposer, Microsoft a dû déposer des brevets à ce sujet. Mais comme l'a dit Rom54, les développeurs disposent de tout ce qu'il faut pour le faire eux-mêmes au travers des packages. Certes, je me mets à leur place, développer un désinstalleur, ce n'est guère gratifiant :( Quant à la fin de ton intervention, je suis circonspect, sachant que dans un OS, il y a énormément de pain sur la planche de toutes façons. Pour moi (déformation due à l'âge, j'ai travaillé sur mainframe), je suis particulièrement sensibilisé à la sauvegarde des données, avant même de les utiliser :) Or, Apple a sorti l'outil que j'attendais, Time Machine (et Time Capsule ensuite), ce qui m'a personnellement comblé, car ce n'est pas un produit bâclé, loin de là. Il est passé presque inaperçu, pourtant, à plusieurs reprises, ce produit à sauvé (à moi, ma famille et mes amis) des données de plus en plus précieuses (photos que l'on n'imprime plus en papier, vidéo des p'tits, musique...). @rom54 Apple et Oracle se sont entendus récemment à propos de Java, pour que ce soit Oracle qui s'en occupe, et fasse à son rythme les distributions. Pourra-t-il le faire dans les contraintes du MAS (Mac Apple Store) ? Je suppose qu'Apple à déjà réfléchi là-dessus...

CONNEXION UTILISATEUR