2010-01-30 9 views
2

Je développe une application dans le cacao qui doit copier un ensemble de fichiers dans le dossier système. Lorsque je copie des fichiers dans le dossier système, j'obtiens un message d'erreur "Permission denied". Comment puis-je résoudre ce problème?Comment copier un dossier dans un dossier système dans Cocoa

S'il vous plaît quelqu'un me aider ...

Merci à l'avance

+7

Apple est très clair que le dossier System est interdit aux développeurs et qu'ils se réservent le droit de modifier tout ce qui y est stocké. C'est pourquoi ils fournissent des dossiers dans le dossier Bibliothèque pour ajouter le genre de choses que vous seriez tenté de mettre dans le système. Si vous pouvez nous donner une idée des fichiers que vous avez besoin de copier, nous pouvons vous dire où le meilleur endroit serait de les mettre. – Alex

Répondre

3

Mac OS X utilise un système d'autorisation qui empêchent l'application de copier des fichiers dans des emplacements du système sans avertissement. C'est pourquoi vous devez entrer vos informations d'identification lors de l'installation d'un framework par exemple.

Si vous souhaitez effectuer des opérations privilégiées dans votre application, je vous suggère de lire le chapitre Authorization Services Programming Guide et en particulier le chapitre Scenarios: il vous aidera à décider comment faire la copie de fichier.

4

Il ne devrait pas être nécessaire de mettre quelque chose dans/System, et ce n'est probablement pas une bonne idée de toute façon, car il pourrait être effacé par une mise à jour du système. Je suppose que tout ce que vous cherchez à faire devrait être possible par d'autres moyens, par ex. en utilisant/Library ou ~/Library.

+2

Je peux penser à deux choses qui, AFAIK, ne peuvent fonctionner que dans/System: Pilotes de périphériques et pilotes de système de fichiers. Même les extensions de noyau (si elles sont spécifiques à l'application, pas les pilotes de périphériques) peuvent fonctionner en dehors de/System; vous auriez juste besoin de les charger à la demande en exécutant kextload. –

1

Utilisez PackageMaker pour créer un package d'installation approprié, comme je l'ai suggéré au your previous question.

Questions connexes