Run script through launch agent is failed

applescriptlaunchdscreen-sharingterminal

I try to run the next script through LaunchAgent:

on run argv
    set current_path to POSIX path of ((path to me as text) & "::")
    set common to load script (current_path & "common.scpt")
    set screenSharingApp to "Screen Sharing"

    try
        if application screenSharingApp is running then do shell script "killall '" & screenSharingApp & "'"
    end try
    repeat until application screenSharingApp is not running
        delay 0.1
    end repeat

    tell application screenSharingApp
        launch
        activate
    end tell

end run

But always I get this error: execution error: Screen Sharing got an error: Application isn’t running. (-600)

If I run the same script through Script Editor or Terminal is running OK.

What can it be? Why does it not work?

My plist:

<?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.myapp</string>
        <key>StandardErrorPath</key>
        <string>/Users/user1/Desktop/stderr.log</string>
        <key>StandardOutPath</key>
        <string>/Users/user1/Desktop/stdout.log</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/osascript</string>
            <string>/Users/user1/Desktop/1.scpt</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StartInterval</key>
        <integer>300</integer>
    </dict>
</plist>

Best Answer

My recommendations:

  1. Move anything to neutral ground:

    This removes the launch agent from the launchd database:

    sudo launchctl unload /Library/LaunchAgents/com.myapp.plist
    sudo launchctl remove com.myapp
    

    Move the .scpt file:

    sudo mv ~/Desktop/common.scpt /usr/local/bin/
    

    Remove unneeded std* files:

    rm ~/Desktop/stdout.log
    rm ~/Desktop/stderr.log
    

    Modify /Library/LaunchAgents/com.myapp.plist with sudo nano /Library/LaunchAgents/com.myapp.plist accordingly:

    <?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>Disabled</key>
        <false/>
        <key>Label</key>
        <string>com.myapp</string>
        <key>ProgramArguments</key>
        <array>
            <string>/usr/bin/osascript</string>
            <string>/usr/local/bin/common.scpt</string>
        </array>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/tmp/com.myapp.stderr</string>
        <key>StandardOutPath</key>
        <string>/tmp/com.myapp.stdout</string>
        <key>StartInterval</key>
        <integer>300</integer>
    </dict>
    </plist>
    
  2. Increase application kill check delay in the script:

     ...
     repeat until application screenSharingApp is not running
         delay 0.5
     end repeat
     ...
    
  3. Load the plist:

    sudo launchctl load /Library/LaunchAgents/com.myapp.plist
    

Check that no older "Screen Sharing" app is present on another volume and linked in the launch services database!