Ecrire dans un fichier dans /Applications sans être administrateur

Nune

Membre confirmé
19 Juillet 2003
68
1
Toulouse
Ayant une culture Mac très récente, je suis assez partagée devant mon problème. J'ai développé une application qui doit s'installer dans le /Applications à la racine pour être accessible à tout le monde. Cette application créée et écrit dans un fichier avec des fopen(,w+) pour sauvegarder des informations, j'ai choisi de placer ce fichier tout bêtement dans le machin.app/Contents/ de mon appli pour faire propre et invisible (pour le novice). Or gros problème que je viens de réaliser, l'utilisateur de base non administarteur n'a pas le droit d'écrire dans le /Applications et du coup mon appli est foutue en l'air...sniff

Comment faire et quelle est la philosophie Mac ? Où est il d'usage de placer les fichiers de sauvegarde des applications?

Au secours je ne sais rien à ce sujet. Merci d'avance pour vos réponses qui ne pourront que m'éclairer.
 
En effet, ce n'est pas trop la chose à faire d'écrire ça à cet endroit. Tu peux écrire dans les dossiers : "~/Library/Preferences/", "~/Library/Application Support/NomDeTonAppli/", ou bien "~/Documents/".
Si c'est pour simplement sauvegarder quelques paramètres, je te conseillerai vivement d'écrire dans le dossier Preferences, tu devrais toujours pouvoir y écrire (ou alors si ce n'est pas le cas, c'est que l'admin ne l'a pas voulu, donc c'est pas un problème). Idem pour le dossier Application Support, si tu as des données plus conséquente à stocker, je te conseillerai plutôt ce dossier-là par contre.
Autre chose encore, les applications ne sont pas forcément placée dans /Applications donc si par hasard tu tombes sur quelqu'un qui installe ses applis "bizarrement", ta solution ne marcherait pas. Alors que les dossiers Preferences et Application Support sont toujours présent.
 
D'après ce que tu me dis, je ne peux écrire, si ne suis pas admin , que dans mon home? Le problème c'est que je n'ai pas prévu de préf utilisateur dans mon appli et dc j'aurais aimé que tous les utilsateurs écrivent par l'intermédiaire de l'appli dans le même fichier qui serait placé par exemple dans le /Library/Preferences commun à tout le monde.
 
Bonjour,

Entierement d'accord avec Molgow.
Un complement : pour recuperer le chemin sur les preferences de l'utilisateur tu peut utiliser :

OSErr err;
short volumePref;
long PathPref;

err=FindFolder(kOnSystemDisk,kPreferencesFolderType,kCreateFolder,&volumePref,&PathPref);

Cordialement
 
Nune a dit:
D'après ce que tu me dis, je ne peux écrire, si ne suis pas admin , que dans mon home? Le problème c'est que je n'ai pas prévu de préf utilisateur dans mon appli et dc j'aurais aimé que tous les utilsateurs écrivent par l'intermédiaire de l'appli dans le même fichier qui serait placé par exemple dans le /Library/Preferences commun à tout le monde.

Hmmm... A mon avis, ce n'est pas tres légal d'écrire dans ce folder.
Le principe d'OS X, si j'ai bien compris est de protéger les acces entre les utilisateurs.

Ce que tu peut faire, c'est crééer un dossier à la racine de ton dur. Je pense que tous les utilisateurs pourront y acceder, mais ce faisant tu dois enfreindre une ou deux "guidelines"

Cordialement
 
Y a t il une fonction me permettant de savoir si l'utilisateur courant qui utilise mon appl à les droits administarteur ou non?
 
Didier Guillion a dit:
Hmmm... A mon avis, ce n'est pas tres légal d'écrire dans ce folder.
Le principe d'OS X, si j'ai bien compris est de protéger les acces entre les utilisateurs.

Ce que tu peut faire, c'est crééer un dossier à la racine de ton dur. Je pense que tous les utilisateurs pourront y acceder, mais ce faisant tu dois enfreindre une ou deux "guidelines"

J'ai trouvé un pdf sur le site d'Apple qui donne quelques informations de bases (pages 170 et 204) :
http://developer.apple.com/documentation/MacOSX/Conceptual/SystemOverview/SystemOverview.pdf

A priori, l'idée de créer un dossier à la base du disque n'est vraiment pas très bonne. Que se passerait-il si tout le monde faisait de cette manière ?? ça serait un peu le bordel complet... à moins de sauver ça dans un dossier commençant par un point (".")... mais ça ne me semble pas très "légal" non plus comme façon de faire.

Je pense qu'il vaudrait mieux stocker ces informations dans les dossiers "/Library/Preferences/" et "/Library/Application Support/" si tu veux qu'elle soit disponible pour tous les utilisateurs. Il reste cependant un problème, c'est que des utilisateurs non-admin n'ont pas le droit d'écrire dans ces dossiers par défaut. Donc la solution que je préconiserai, c'est de créer un dossier dans Application Support ou alors un fichier dans Preferences (dans le dossier Library de la racine, accessible à tous), et donner les droits de lecture, d'écriture à tout le monde (j'ai regardé dans ces dossiers sur mon système, et apparemment, c'est des choses qui se font). Evidemment, il serait nécessaire d'être administrateur pour installer le logiciel, ou au moins pour pouvoir le lancer lors de sa première utilsation. Ceci ne devrait pas être dérangeant, l'installation et la création de fichier accessible à tous sur un système devrait toujours se faire par un administrateur, ça serait en quelques sortes un défaut de sécurité si n'importe qui pouvait le faire.
 
En cherchant un peu, je pense que l'utilisation des CFPreferences en créant des plist est plus "Apple like", si vous avez des infos là dessus je suis preneuse?