Objective-C:在app bundle中编辑plist的内容

时间:2017-01-16 20:15:29

标签: objective-c installer

我有一个安装程序,可以在/Applications内放置一个应用程序。在那里复制应用程序之后,我编写了一个安装程序插件来获取用户配置,例如服务器地址和端口号。该插件将这些配置写入/Applications/myapp.app中的plist文件。

我写作:

NSString *filePath = @"/Applications/emptyapp.app/Contents/Resources/DummyConfig.plist";
NSString *test = @"somestring";
NSError *error;
[[NSFileManager defaultManager] createFileAtPath:filePath contents:nil attributes:nil];
[test writeToFile:filePath atomically:YES encoding:NSUTF8StringEncoding error:&error];
if(error){
    [self alert:error.localizedDescription];
}

我获得了在那里写作的许可被拒绝,这是有道理的,但我该如何解决这个问题?

这些配置是一次性设置,只能由管理员访问,而不是普通用户。

(我正在使用Packages制作安装程序,并在目标C中构建插件。包中有一个复选框,需要管理员密码'但它似乎没有使用这些凭据因为我无法写入应用程序包。)

1 个答案:

答案 0 :(得分:0)

最佳做法是让您的应用编写并在某个位置的用户库文件夹中访问该plist文件,通常在应用支持中。然后,您不必担心权限问题或系统可能检测到您的应用已损坏。如果您绝对需要修改应用程序包中的某些内容,则安装程序需要使用提升的权限一直运行,或者您需要构建一种机制来获取应用程序的提升权限(例如Little Snitch)