I have written a script that mounts a drive before launching an application. The application, however, should only launch if the drive mounted successfully.
I have the correct code to mount the drive and launch the application, but I need to check if the mount was successful only after the operation has finished. At the moment it appears that the if statement is running immediately after the mount.
# Get wireless network SSID
set SSID to do shell script "/System/Library/PrivateFrameworks/Apple80211.framework/Resources/airport -I | awk '/ SSID: / {print $2}'"
# Test if we are connected to the right network(s)
# We can test for multiple networks if you’re always on the move, like me!
# if SSID is "YOUR_SSID_ONE" or SSID is "YOUR_SSID_TWO" then
if SSID is "virginmedia7912273" or SSID is "virginmedia5097309" then
tell application "Finder"
# Mount your disk
mount volume "afp://nas/iTunes/"
# Check that the disk successfully mounted
if exists disk "iTunes" then
# If the disk successfully mounted, launch iTunes
tell application "iTunes"
# Launch launches, activate brings window to focus (?)
launch
activate
end tell
else
# If the disk didn’t mount, throw an error.
display dialog "Unable to connect to iTunes storage device."
end if
end tell
else
# If we are not connected to the right network(s), throw an error.
display dialog "You are not connected to your home network."
end if
You could check if the mount was successful with a cycle like this:
You could also add a condition to exit the loop after a certain number of iterations:
EDIT:
The script must be modified to be compatible with latest macOS versions:
Thanks to a walker for the suggestion.