分发应用程序时OS X上的应用程序权限问题

时间:2011-08-08 12:57:51

标签: xcode macos

我们正在为OS X制作一个应用程序,但是,当.app被复制到另一个MAC上时,我们在读取和写入文件方面存在问题

在一个MAC上,从一开始一切都很好...... 另一个不会写某些文件而另一个2mac不会写某些不同的文件

如果我去展示应用程序内容并希望自己编辑文件,我会被拒绝写入权限

如何分发MAC应用程序,以便没有这样的问题?所以当前用户可以读取和写入所有文件

是否必须有一些授权或代码签名或smth。这种形式不同,除了普通代码?

谢谢

2 个答案:

答案 0 :(得分:2)

听起来您的应用程序试图在自己的应用程序包中编写文件。这里正确的解决方案是:不要那样!应用程序包应该写入的唯一时间是安装或更新它。

应用程序需要写入的文件应存储在用户的主文件夹中,通常位于〜/ Library下。请参阅this note in Apple's dev docs

  • 〜/ Library / Preferences /< appbundleid> .plist中的首选项和设置文件;使用NSUserDefaults
  • 应用为〜/ Library / Application Support /< appname>中的用户管理的数据(文档说使用bundleid,但每个人 - 包括Apple - 改为使用应用程序名称。)
  • 缓存〜/ Library / Caches /< appbundleid>。
  • 中的文件
  • 临时文件,请使用NSTemporaryDirectory
  • 如果您需要分享设置&用户之间的文件,通常应该放在/ Library / Application Support /< appname>中,除非你真的不应该这样做。

答案 1 :(得分:0)

过去我总是使用PackageMaker来创建安装程序。安装包可以使用root权限进行身份验证,因此您可以在安装后设置权限。我现在没有在我面前,但如果你环顾四周,你应该能够看到一个Post-Installer脚本行。编写一个shell脚本,手动设置您遇到的每个文件的权限,然后让包在安装完成后执行该脚本。

您可以在/ Developer / Applications / Utilities / PackageMaker

找到PackageMaker