Bypass a licence agreement when mounting a DMG on the command line
This worked for me when I encountered a .dmg that contained a EULA which I wanted to install it via the command line with no user interaction...
/usr/bin/hdiutil convert -quiet foo.dmg -format UDTO -o bar
/usr/bin/hdiutil attach -quiet -nobrowse -noverify -noautoopen -mountpoint right_here bar.cdr
(note: I am reasonably sure not all of the above options are needed to bypass the EULA, such as -nobrowse
, -noverify
, -noautoopen
, -mountpoint
. However, I used them and I didn't test without them so I didn't want to claim something that I hadn't tested.)
What I ended up with was a directory with
bar.cdr
foo.dmg
right_here/
where right_here/
contained the contents of the foo.dmg
without being prompted for the EULA.
Be sure to detach when you are done!
/usr/bin/hdiutil detach right_here/
For more information: hdiutil(1) Mac OS X Manual Page.
YMMV
If it just needs "Y" typed in, then pipe the yes command into the hdiutil command:
yes | /bin/hdiutil [...]
That will emulate pressing 'y' and return at the command line.
To type something else, just put it on the command line as a parameter:
yes accept | ...
That'll enter 'accept' into the script.
Note that if the script asks for input multiple times, the yes command will put multiple entries in. You may see output like 'broken pipe' - this just means that the command you piped into quit while 'yes' was still sending input.
I recently came across a DMG that had a EULA and it was really irritating me since I couldn't script around it. I figured out if I converted the DMG to a CDR it bypassed the EULA on mounting the CDR.
Here's what I did:
hdiutil convert foo.dmg -format UDTO -o bar.cdr
hdiutil attach bar.cdr
rm foo.dmg <--optional
Hope this helps.