The problem is that your Applescript runs in the context of the current user and can't access the iTunes running in other accounts. One way to close/terminate all running iTunes processes would be (in Terminal)
sudo killall -sm iTunes
but this may leave the iTunes meta data in an inconsistant state (which means longer startup time the next time you start iTunes and potential data loss).
In my opinion, the best way to do it is by using Apple's own task scheduler: launchd
, because you don't need to install third-party software. First, the theory: to run a script from the command line, you just run:
osascript /PATH/TO/YOUR/script.scpt
Knowing this, all you have to do is create a plist
file in ~/Library/LaunchAgents/
with this:
<?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>air-mail-beta.job</string>
<key>ProgramArguments</key>
<array>
<string>/usr/bin/osascript</string>
<string>/PATH/TO/YOUR/SCRIPT</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
The name of the plist
file doesn't matter, but it should be in ~/Library/LaunchAgents/
. Also, make sure to change /PATH/TO/YOUR/SCRIPT
accordingly.
Finally, you just need to tell launchd
that you want this script to always run. To do that, you just do:
launchctl load -w ~/Library/LaunchAgents/NAME-OF-YOUR-PLIST.plist
and you're done! If it looks like the script didn't start, you can do this:
launchctl start air-mail-beta.job
where air-mail-beta.job
is the property under <key>label</key>
that we've set in the plist
file.
Finally, should you ever need to disable the script, don't forget to unload
it with:
launchctl unload -w ~/Library/LaunchAgents/NAME-OF-YOUR-PLIST.plist
I know this solution is more technical, but trust me, that's a better way to deal with your issue. If you have any question, just ask!
Best Answer
I think this may be what you're looking for.