versiones sistemas operativos mojave mac historia evolucion caracteristicas macos autorun

sistemas - macos mojave



¿Se ejecuta mediante programación al inicio en Mac OS X? (4)

¿Cómo configuro un paquete de aplicaciones en Mac OS X para que se ejecute cuando el usuario inicia sesión?

Básicamente, el equivalente de la clave de registro HKCU/Software/Microsoft/Windows/CurrentVersion/Run en Windows.


El método "correcto" es crear un LaunchAgent para los procesos que desea iniciar en el inicio de sesión que puede tener una interfaz de usuario y un LaunchDaemon para aquellos que deberían ser procesos de fondo puro. En su instalador, coloque su lista en la carpeta correcta, ya sea para el usuario, para todos los usuarios o para el sistema. La razón por la que este método es superior es porque puede usar launchd para controlar cómo se ejecuta su proceso, incluida la capacidad incorporada para asegurarse de que se siga ejecutando incluso si el usuario se bloquea o lo detiene.


Puede agregar la aplicación a los "Elementos de inicio de sesión" del usuario (en Preferencias del sistema => Cuentas = [usuario]) o puede agregar un agente launchd a la carpeta ~/Library/LaunchAgents del usuario (consulte man launchd.plist ). Use ~/Library/LaunchDaemons/ si su aplicación no tiene una interfaz de usuario orientada al usuario. Como señalan otros, launchd le da un gran control sobre cuándo se inicia la aplicación, qué sucede si la aplicación se cierra o se bloquea, etc. y es más adecuada para aplicaciones de estilo "daemon" (con nuestra interfaz de usuario sin interfaz de usuario).

La primera opción (elementos de inicio de sesión) se puede manipular mediante programmatically (enlace de Gordon ).


Quería lanzar esto aquí para cualquiera que use Qt / C ++. Qt hace que sea muy fácil de usar plists a través de la clase QSettings. Echa un vistazo a este fragmento de código de una aplicación ficticia de muestra.

void MainWindow::readPlist() { QSettings settings(appPlistPath, QSettings::NativeFormat); QVariant value = settings.value("mykey"); QMessageBox::information(this, "Your Value", value.toString()); } void MainWindow::addPlistEntry() { QSettings settings(appPlistPath, QSettings::NativeFormat); settings.setValue("mykey", "myvalue"); } void MainWindow::removePlistEntry() { QSettings settings(appPlistPath, QSettings::NativeFormat); settings.remove("mykey"); }


Un ejemplo de trabajo a continuación.

Crear un archivo

~ / Library / LaunchAgents / my.everydaytasks.plist

Con contenidos:

<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>my.everydaytasks</string> <key>ProgramArguments</key> <array> <string>/Applications/EverydayTasks.app/Contents/MacOS/EverydayTasks</string> </array> <key>ProcessType</key> <string>Interactive</string> <key>RunAtLoad</key> <true/> <key>KeepAlive</key> <false/> </dict> </plist>

Mira la publicación original que me ayudó a hacer este ejemplo:

https://superuser.com/a/229792/43997

Para probar necesitas ejecutar esto en la terminal.

launchctl load -w ~/Library/LaunchAgents/my.everydaytasks.plist

Descargar

launchctl unload -w ~/Library/LaunchAgents/my.everydaytasks.plist

Ver también

https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man5/launchd.plist.5.html

Es la otra forma de agregar su aplicación a starup usando "Elementos de inicio de sesión". Vea este proyecto de ejemplo sobre cómo implementarlo:

https://github.com/justin/Shared-File-List-Example