【问题标题】:how can I remove XPCService by script如何通过脚本删除 XPCService
【发布时间】:2016-01-21 09:34:59
【问题描述】:

我使用由 loginItems 运行的 xpcservices 为 os x 应用程序创建项目。这意味着服务是在路径中的应用程序中建立的:{APP_NAME}.app/Contents/Library/LoginItems 并且负责运行服务的人是主应用程序:

NSXPCConnection *connection = [[NSXPCConnection alloc] initWithLoginItemName:@"{SERVICE_NAME}.app" error:&error]; 

我构建了卸载程序,用于删除我安装的所有文件。我需要删除该服务。 我使用的命令:

launchctl remove SERVICE_NAME

如果我从终端运行它,这很好用, 但是如果我从脚本运行它,它会从“活动监视器”中删除该服务,但该服务仍然在状态为-5的launchctl列表中。 所以如果我安装新版本,它会采用以前安装的版本。

我通过 NSTask 从 xcode 运行脚本。没有错误。它做了脚本应该做的事情。 我什至设置了管理员权限:

/usr/bin/osascript -e 'do shell script \"SCRIPT_NAME args 2>&1 etc\" with administrator privileges'

为什么不像我在终端中那样删除它?

附注: 从 Xcode 运行它时它的工作原理(即使应用程序处于发布模式)

【问题讨论】:

    标签: objective-c macos bash launchd nsxpcconnection


    【解决方案1】:

    要正确删除登录项,您应该在代码中执行此操作: 在SMLoginItemSetEnabled 中传递 false:

    SMLoginItemSetEnabled((__bridge CFStringRef)loginItemBundleId, false)
    

    【讨论】:

      猜你喜欢
      • 2017-10-11
      • 1970-01-01
      • 2021-05-17
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多