How to Use Automator in Mac to Eject and Delete DMG Files Automatically

Alvaro Bernedo

Mac Disk Image MountedOne of the aspects where Macs differ from Windows PCs the most is when it comes to installing applications. On Macs, you need mount a disk image and then unmount it and delete once the installation is finished, which can be a bit of a hassle, especially if you have to test many apps in a short amount of time.

Thinking of that, this time we’ll share a couple of neat little workflows that you can implement on your Mac using Automator. With any of them, every time you are done with an app installation on your Mac, you’ll be able to eject/unmount and delete the disk image in just a couple of clicks.

Let’s get started with how to set up these nice Automator workflows.

Delete DMG Files Automatically When You Eject Them

Step 1: Open Automator and choose to create a new document. From the available document types that show up on the dialog box, select Service.

Automator Service

Step 2: At the top of the right panel, make sure to choose from the dropdown menus the options ‘no input’ and ‘Finder’ respectively so that the end result is as the one pictured below.

Automator Service receives

Step 3: Next, on the left panel of Automator, search for the Run AppleScript action and drag it to the right panel. An AppleScript window will show up with some placeholder code in it.

Automator Run Applescript

Automator Code 1

Delete that code and instead copy and paste the following one in the script box:

tell application "Finder"
set selection_list to selection
if (count selection_list) < 1 then
display dialog ¬
"Please select a volume mounted from a disk image." with title ¬
"No Selection Found" with icon stop ¬
buttons ["OK"] default button 1
return
end if
set my_selection to item 1 of selection_list
set my_kind to kind of my_selection
set my_name to name of my_selection
if my_kind is not "Volume" then
display dialog ¬
"Please select a volume mounted from a disk image file." with title ¬
"Selection is not a Disk Image" with icon stop ¬
buttons ["OK"] default button 1
return
end if
set volume_list to paragraphs of (do shell script "hdiutil info | grep ^/dev/disk | grep -o '/Volumes/.*'")
set source_list to paragraphs of (do shell script "hdiutil info | grep ^image'-'alias | grep -o '/.*'")
set match_found to false
repeat with v from 1 to (count volume_list)
if "/Volumes/" & my_name = item v of volume_list then
set match_found to true
exit repeat
end if
end repeat
if match_found is not equal to true then
display dialog ¬
"The selected volume does not appear to be a Disk Image." with title ¬
"Could not find Disk Image" with icon stop ¬
buttons ["OK"] default button 1
return
else
set my_source to POSIX file (item v of source_list) as alias
move my_source to the trash
eject my_selection
--reveal my_source
end if
end tell

Step 4: Now save this Automator service and give it a name that is easy to remember.

Automator Eject and Delete

Step 5: Once this is done, every time you have a disk image mounted, all you have to do is select it and on the Finder menu select Services and then Eject and Delete (or whatever you named the service you just created) and the disk image file will be both unmounted and deleted with one click.

Eject and Delete

Now, let’s take a look at another Automator workflow that achieves the same objective doing exactly the opposite.

Eject DMG Files Automatically When You Drag Them To the Trash

As you can see from the title, this Automator workflow allows you to achieve the same purpose, except that in reverse, so you can avoid this message every time you drag to the trash a mounted DMG file.

Annoying Message

Here are the steps to create it.

Step 1: Create a new document in Automator and select Folder Action from the available document types.

Automator Folder Action

Step 2: At the top of the right panel, select Other… from the dropdown menu. Then, on the dialog box that pops over, type ~/.Trash to work with that folder.

Automator Other

Automator Go to Folder

Automator Trash

Step 3: Next, on the left panel, drag the Run Shell Script action to the right panel. On the two dropdown menus that show up, select /usr/bin/python and as arguments respectively.

Automator Run Shell Script

Automator Fields

Step 4: Replace the placeholder script in the script box with the following one:

import string, os, sys
lines = os.popen("hdiutil info").readlines()
should_eject = False
for line in lines:
if line.startswith("image-alias"):
path = line.split(":")[1]
image_path = path.lstrip().rstrip()
if image_path in sys.argv:
should_eject = True
elif line.startswith("/dev/") and should_eject is True:
os.popen("hdiutil eject %s" % line.split()[0])
should_eject = False
elif line.startswith("###"):
should_eject = False

Once done, save the Folder Action and quit Automator. Now, whenever a DMG file is mounted, all you’ll have to do is drag it to the Trash and it will be unmounted at the same time.

Automator Code 2

Automator New Folder Action

Cool Tip: You can also create keyboard shortcuts for these actions by following the instructions at the end of this tutorial.

And there you go. Two different workflows to enable a very convenient feature on your Mac. Now all left to do is just choose which one you find more convenient. And the best of all? In both cases you’ll learn a bit more about Automator. Enjoy!

Also See
#automation #OS X

Join the newsletter

Alvaro Bernedo

Written By

Alvaro Bernedo

Contributor at Guiding Tech