//开启
bool StartupWithSystem(const std::string& strProgramName)
{
QString qtoxPlist = QDir::cleanPath(QStandardPaths::writableLocation(QStandardPaths::HomeLocation) +
QDir::separator() + "Library" + QDir::separator() + "LaunchAgents" + QDir::separator() + "net.my.app.plist");
QString qtoxDir = QDir::cleanPath(QCoreApplication::applicationFilePath());
QSettings autoRun(qtoxPlist, QSettings::NativeFormat);
autoRun.setValue("Label", "net.my.app.plist");
//"net.my.app.plist" 此名字自已随意取的
autoRun.setValue("Program", qtoxDir);
autoRun.setValue("WorkingDirectory", QDir::cleanPath(QCoreApplication::applicationDirPath()));
autoRun.setValue("Disabled", false);
autoRun.setValue("RunAtLoad", true);
//startup_with_system(strProgramName, true);
return true;
}
//关闭
bool RemoveStartupWithSystem(const std::string& strProgramName)
{
//startup_with_system(strProgramName, false);
QString qtoxPlist = QDir::cleanPath(QStandardPaths::writableLocation(QStandardPaths::HomeLocation) +
QDir::separator() + "Library" + QDir::separator() + "LaunchAgents" + QDir::separator() + "net.weline.memenet.plist");
qDebug()<<"qtoxplist === "<<qtoxPlist;
QString qtoxDir = QDir::cleanPath(QCoreApplication::applicationFilePath());
QSettings autoRun(qtoxPlist, QSettings::NativeFormat);
autoRun.setValue("Label", "net.my.app.plist");
autoRun.setValue("Program", qtoxDir);
autoRun.setValue("WorkingDirectory", QDir::cleanPath(QCoreApplication::applicationDirPath()));
autoRun.setValue("Disabled", false);
autoRun.setValue("RunAtLoad", false);
return true;
}
~/Library/LaunchAgents//当前用户下开机启动后启动下面的plist文件
/Library/LaunchAgents
/System/Library/LaunchAgents
以上三个目录为系统推荐放置的路径,是当登录之后启动的进程
~/Library/LaunchDaemons
/Library/LaunchDaemons
/System/Library/LaunchDaemons
放置在以上三个目录,则启动为守护进程,为系统启动后立即启动的进程
plist中主要的字段和它的含义
Label 用来在launchd中的一个唯一标识,类似于每一个程序都有一个identifies一样。
UserName 指定运行启动项的用户,只有当Launchd 作为 root 用户运行时,此项才适用。
GroupName 指定运行启动项的组,只有当Launchd 作为 root 用户运行时,此项才适用。
KeepAlive 这个key值是用来控制可执行文件是持续运行呢,还是满足具体条件之后再启动。默认值为
false,也就是说满足具体条件之后才启动。当设置值为ture时,表明无条件的开启可执行文件,并使之
保持在整个系统运行周期内。
RunAtLoad 标识launchd在加载完该项服务之后立即启动路径指定的可执行文件。默认值为false。
Program 这个值用来指定进程的可执行文件的路径。
ProgramArguments 如果未指定Program时就必须指定该项,包括可执行文件文件和运行的参数。
WorkingDirectory 工作目录