0 votos

No se pueden utilizar los Eventos del Sistema cuando se utilizan Daemons de Lanzamiento y Agentes

Estoy escribiendo un pequeño programa Go que utiliza osascript (basado en mac2mqtt ):

func getCommandOutput(name string, arg ...string) string {
    var outbuf, errbuf strings.Builder // or bytes.Buffer
    cmd := exec.Command(name, arg...)
    cmd.Stdout = &outbuf
    cmd.Stderr = &errbuf

    err := cmd.Run();

    stdout := outbuf.String()
    stderr := errbuf.String()

    if err != nil {
        log.Println(stderr)
        log.Fatal(stderr)
    }

    return strings.TrimSuffix(stdout, "\n")
}

func main() {
    runCommand("/usr/bin/osascript", "-e", "tell application \"zoom.us\"", "-e", "tell application \"System Events\"", "-e", "keystroke \"a\" using {shift down, command down}", "-e", "end tell", "-e", "end tell")
}

Después de compilar este código en un archivo llamado mac2mqttzoom Me sale un ejecutable. Ejecuto chmod +x mac2mqttzoom y ejecutarlo desde Visual Studio Code, y obtener este diálogo:

Le doy a OK y todo está bien. Luego creo un archivo LaunchAgent:

<?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>com.adriaan.mac2mqttzoom</string>
        <key>Program</key>
        <string>/Users/adriaan/mac2mqtt/mac2mqttzoom</string>
        <key>WorkingDirectory</key>
        <string>/Users/adriaan/mac2mqtt/</string>
        <key>StandardOutPath</key>
        <string>/Users/adriaan/mac2mqtt/standard.log</string>
        <key>StandardErrorPath</key>
        <string>/Users/adriaan/mac2mqtt/error.log</string>
        <key>RunAtLoad</key>
        <true/>
        <key>KeepAlive</key>
        <true/>
    </dict>
</plist>

Pero cuando ejecuto este programa me sale este error:

System Events got an error: osascript is not allowed assistive access. (-25211)

Sólo cuando se ejecuta con Daemons y Agentes de Lanzamiento.

He dado permiso a través de Acccessibility a todas las aplicaciones relevantes:

1voto

James Hebden Puntos 256

Gracias, @gordon-davisson por guiarme en la dirección correcta.

Moví mi plist -archivo a /Library/LaunchDaemons/ y he readmitido mi binario en las aplicaciones de Accesibilidad en las Preferencias del Sistema:

Tienes que hacer esto cada vez que tu binario cambie. Antes no lo hacía. Así que para todos los que se encuentran con este problema también:

  1. Actualice su propia aplicación/binario
  2. Eliminar de la lista de accesibilidad
  3. Añádelo de nuevo a la lista (a través del botón + o arrastrar y soltar)
  4. Descargue y cargue su aplicación de nuevo
    • sudo launchctl unload /Library/LaunchDaemons/your.app.plist
    • sudo launchctl load /Library/LaunchDaemons/your.app.plist

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X