【发布时间】: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