我使用 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列表中。所以如果我安装新版本,它会采用以前安装的版本。
我从 xcode 运行脚本NSTask
。没有错误。它做了脚本应该做的事情。我什至设置了管理员权限:
/usr/bin/osascript -e 'do shell script \"SCRIPT_NAME args 2>&1 etc\" with administrator privileges'
为什么它不像我在终端中那样删除?
ps:从 Xcode 运行时它的工作原理(即使应用程序处于发布模式)