How to mount a disk image with automator or Applescript and without hdiutil? An Automator workflow that mounts a disk image on when I drag and drop the dmg file onto it is easy: 

Instead of dragging and dropping the dmg file I want to double click the created workflow and have it mount a specific file. I've tried using "Set Value of Variable" to the path of the dmg, "Open Finder Items", and "Get Selected Folder Items", nothing works. 

I can do it with the command line as:

hdiutil mount disk_image_name.dmg


I've also tried with the Applescript: 

    on run {input, parameters}

        tell application "DiskImageMounter"
            open "path/disk_image_name.dmg"
        end tell
    end run


But after mounting the disk image as expected, Automator freezes for about 15 seconds and gives the below Syntax Error. 



The reason I want to avoid using hdituil is the disk images are encrypted. When using the Automator mount tool the password is done in Apple's dialog box. Using hdiutil I end up passing the password as stdin. 

printf '%s\0' "$PASSPHRASE" | hdiutil attach $LOCATION -stdinpass
I would use hdiutil ... instead of other methods but with an image protected by a certificate instead of a password. This is similar as to building an encrypted image with a password and a recovery key (based on a cert) - without password though:


Create a temporary cert folder and cd into it:

mkdir ~/certsecdmg
cd ~/certsecdmg 

Create a root CA if you don't have one already:

openssl genrsa -des3 -out casecdmg.key 4096
openssl req -new -x509 -days 7300 -key casecdmg.key -out casecdmg.crt


Fill in all proposed fields.
Create a password protected certificate signing request:

openssl genrsa -des3 -out secdmgbuild.key 4096 
openssl req -new -key secdmgbuild.key -out secdmgbuild.csr


Fill in all proposed fields.
Create the signed certificate in PEM format

openssl x509 -req -days 7300 -in secdmgbuild.csr -CA casecdmg.crt -CAkey casecdmg.key -set_serial 01 -out secdmgbuild.crt

Convert the signed certificate to DER format

openssl x509 -in secdmgbuild.crt -inform pem -out secdmgbuild.der -outform der   

Bundle the PEM certificate and private key into a PKCS#12 package

openssl pkcs12 -export -in secdmgbuild.crt -inkey secdmgbuild.key -out secdmgbuild.p12

Use hdiutil with the -certificate options to create an encrypted volume (example only):

hdiutil create -type SPARSE -encryption aes-256 -certificate ~/certsecdmg/secdmgbuild.der -fs HFS+J -volname "SecureImage" -size 100m ~/Desktop/SecureImage

Import secdmgbuild.p12 in your keychain
Double-click SecureImage.sparseimage, enter: password of step 3/always allow to always allow access for diskimages-helper.
Create a new Automator workflow, adding a Run Shell Script action with the following command:

hdiutil mount ~/Desktop/SecureImage.sparseimage


 (please apply paths as needed) 

This simple Automator workflow works as "workflow" and "app".
Add further actions as required.
Save the content of the folder certsecdmg at a secure place and remove it afterwards.