2 votes

Le déclenchement d'agents de lancement pour un chemin d'accès dans une application en sandbox à l'aide de WatchPaths ne fonctionne pas.

J'essaie de créer un utilisateur LaunchAgents qui déclenchera un script lorsqu'un chemin géré par une application sandbox changera (dans mon cas, lorsque /Library/Containers/com.omnigroup.OmniFocus3/Data/Library/Application\ Support/OmniFocus/OmniFocus.ofocus changera).

Pour cela, je veux utiliser le WatchPaths En ce qui concerne la clé launchd, j'ai déjà essayé avec une action de dossier, mais ceux-ci sont limités à l'ajout de fichiers dans un dossier.

J'ai fait un test fonctionnel pour écouter un fichier et un dossier dans mon répertoire personnel et déclencher une notification, par exemple :

<?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>me.mayeu.helloworld</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/local/bin/terminal-notifier</string>
            <string>-message</string>
            <string>Test</string>      
        </array>
        <key>WatchPaths</key>
        <array>
                <string>/Users/me/watchtest/</string>
        </array>
</dict>
</plist>

Cela fonctionne bien pour tous les changements qui se produisent sous le watchtest dossier.

Mais lorsque je remplace le WatchPaths avec la base de données OmniFocus, cela ne fonctionne plus (aucune notification n'est déclenchée) :

<?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>me.mayeu.script.OmniListen</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/bin/terminal-notifier</string>
      <string>-message</string>
      <string>Test</string>
    </array>
    <key>WatchPaths</key>
    <array>
      <string>/Users/me/Library/Containers/com.omnigroup.OmniFocus3/Data/Library/Application\ Support/OmniFocus/OmniFocus.ofocus</string>
    </array>
  </dict>
</plist>

J'ai l'impression que cela est dû au sandboxing de l'application. Mais je ne trouve pas de documentation à ce sujet.

J'utilise MacOS Mojave 10.14.2.

1voto

Fyodor Soikin Points 7907

J'ai donc trouvé la solution. Et ça n'a rien à voir avec le sandboxing, mais tout à voir avec le fait que j'avais une \ dans mon chemin parce que je l'ai copié depuis le shell.

par exemple : .../Data/Library/Application\ Support/... devrait être .../Data/Library/Application Support/... .

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X