我们开发了一个类似于反病毒的应用程序,它既有后台进程,也有用户交互的GUI(注意:后台进程将由GUI作为单独的线程执行)。
以下是我们在macOS上部署时的应用程序要求:
应该使用LaunchAgent为每个登录的用户启动应用程序的GUI部分。即使是那些在安装软件后创建其帐户的用户。
没有管理员权限的用户不能以任何方式停止GUI进程(例如,launchctl unload / bootout或Activity Monitor)
到目前为止我们做了什么
我们在/Library/LaunchAgents
中创建了一个launchctl load -F com.myfile.plist
文件,并使用launchctl
加载了该文件,该文件成功加载,并且由于范围设置为Aqua,因此只要用户在代理中加入开始了。
我们遇到的问题
//spaghetti code, will not work
//1. Create MySQL Connection
//2. loop through table
foreach($row as $number=>$message) {
$sms_sent = $client->messages->create(
$number,
array(
'from' => '+1xxxxxxxxxx',
'body' => $message,
'statusCallback' => "http://myapplication_callback_url"
)
);
}
备注
有关我们如何满足部署要求的任何想法?
答案 0 :(得分:0)
我会将GUI的plist放在/ Library / LaunchAgents中,并将KeepAlive Key添加到plist文件中。 LaunchDaemons中的Background非GUI部分也使用KeepAlive Key。
所以每个用户都可以通过ActivityMonitor结束这个过程,但它会在结束后立即重新启动。
只有管理员用户才能通过运行" sudo launchctl unload com.myfile.plist"来结束这个过程。或者" sudo launchctl unload -w com.myfile.plist"永久禁用它。