【问题标题】:How to create .plist file under /Library/LaunchAgents如何在 /Library/LaunchAgents 下创建 .plist 文件
【发布时间】:2018-04-22 16:01:01
【问题描述】:

我正在尝试通过 Apple Doc 为 macOS 开发启动代理

https://developer.apple.com/library/content/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CreatingLaunchdJobs.html

我的一个要求是代理应该适用于所有用户。我从上面的文档中了解到我必须将我的 .plist 放在“/Library/LaunchAgents”文件夹下。

当我尝试以编程方式创建此文件时,以下代码没有任何反应。

NSMutableDictionary *plist = [[NSMutableDictionary alloc] init];
[plist setObject:@"test" forKey: @"test 1"];
NSString *userLaunchAgentsPath = [[NSString alloc] initWithFormat:@"%@",  @"/Library/LaunchAgents/com.xxx.agent.plist"];
    [plist writeToFile:userLaunchAgentsPath atomically:YES];

原因可能是权限问题。你有解决这个问题的想法吗?

【问题讨论】:

    标签: objective-c macos launchd launch-agent


    【解决方案1】:

    至于权限,plist 应该由 root 拥有,如果您希望应用程序以不同的用户身份运行,您可以通过在 plist 中提供用户名/密码轻松地做到这一点。您的应用可能没有以 root 身份运行。

    【讨论】:

    • launchd.info 对我来说路径并不重要,我的观点是如何在 /Library/LaunchAgents 或 /Library/LaunchDaemons 下创建 .plist 文件。
    • 因为我的回答提到该文件必须由 root 拥有,除非您以 root 身份进行身份验证,或者您的应用程序以 root 身份运行,所以您的解决方案是,对吧?
    • 所以您认为人们会安装此应用程序,然后该应用程序将设置守护程序。那是现实的吗?我知道希望您的用户创建一个launchctl 文件似乎是在自找麻烦,但他们也不太可能希望一个奇怪的应用程序获得root 访问权限。所以我认为这里的答案是在您的应用程序中发送一个launchctl 文件,其中填写了大部分字段,然后给他们添加它的说明。
    • 这个要求不是我提出来的,反正我要和我的经理谈谈。谢谢。
    • @Rob 表示无法从 macOS 应用程序创建守护进程 (.plist)?
    猜你喜欢
    • 2017-02-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-30
    相关资源
    最近更新 更多