Hi all, Anyone know how/if I can use the above script to mount and then unmount physical firewire drives? I have a couple of external disks: one holds all my photos, mp3s, movies, audio etc, the other is the backup drive to which Backup 2 rights to when backing up my system.
- Jul 20, 2017 DMG files are mounted by your system, like a sort of virtual hard drive. When you’re done installing the application, it’s a good idea to unmount the DMG in Finder when you’re done installing: just click the “Eject” arrow. Then you can feel free to delete the original DMG file: you don’t need it anymore.
- Hdiutil unmount /Volumes/example. Where /Volumes/example is a path where disk image was mounted Mount using DiskImageMounter.app. You can quickly mount DMG file by Control-Clicking on it and selecting Open With-DiskImageMounter.app. This will mount DMG file and its content will become available in Finder Locations and /Volumes folder.
Click here to return to the 'An AppleScript to mount, run, unmount a disk image' hint |
What Dale says (and thanks again, Dale!) *should* be right, but OS X seems to have some obscure bugs that prevent it from doing the right thing every time it should.
If I remove the line that Dale mentioned, the script works two or three time - but then, the next time, it launches the application, and the application complains that the disk image is not available - even though it's right there on the desktop. And then the script won't work again (I mean the application won't see the disk image again) until a reboot.
When I include the unmount AND the detach lines, the script continues to work correctly even when I run it ten times - which is the most I've tried so far.
As Dale says, the script is a bit of a CPU hog when it's unmounting and detaching, but this is probably better than waiting through the reboot that seems to be required after it fails. But maybe future versions of OS X won't require all this extra work...
Thanks a bootload for this script!
I had hacked up another older script I found here to set up a SSH tunnel and mount an encrypted sparseimage before opening Mail. It worked well except if I didn't enter my password on the sparseimage mount fast enough, it would lock up.
This one is patient enough to wait.
Scripts like this are the reason I love this site!
One problem:
This will only eject disks that are visible in the desktop view. I have set the name of my mail volume to '.Mail' to keep it off of my desktop, but still have all other mounted images show up. Whenever I try to eject the volume using Finder's 'eject' command, it says it can't find the volume, although it is in the disk list.
Any ideas on how to make the finder eject hidden volumes?
The script at the top of this story (the original hint) ejects hidden disks because it doesn't use the finder to mount or unmount them - it uses shell scripts.
I should have clarified that I was commenting on Christian Leue's script and not on the original script. Sorry!
Hi all,
Anyone know how/if I can use the above script to mount and then unmount physical firewire drives?
I have a couple of external disks: one holds all my photos, mp3s, movies, audio etc, the other is the backup drive to which Backup 2 rights to when backing up my system.
I week or so ago, I discovered that iTunes had somehow found the backed up library and was using that as the default. To stop this is generally eject the backup drive off the desktop, but of course, I have to remember to mount it again before backup 2 runs. I forget quite often!
I'd like to do this automatically if possible.
Stuart
This would be a more significant issue with iTunes configuration and should probably be addressed as such. I suspect that you did a search for music since backing up and iTunes found your backup on top of your regular source.
What you should do to fix the problem is the following:
- Download and install this script from Doug's Applescripts for iTunes (Super Remove Dead Tracks).
- Under 'Advanced' tab in iTunes Preferences, verify that 'iTunes Music folder location' is set to where you want to keep your music. Usually, having the 'Copy files to iTunes Music folder when adding to library' turned on is a good idea as well, but it isn't necessary.
- Verify that your original folder has all of the music.
- Temporarily unmount your Backup2 drive
- Run the Super Remove Dead Tracks script in iTunes.
That should remove any references to the new folder. Note that the script only removes the references from the iTunes library and not the files (at least last time I used it) so it should be safe to run once the volume is unmounted.
If the music is not in your library, try consolidating your music after step 2 above (in iTunes, use 'Consolidate Library...' under 'Advanced' menu) and then you may want to check for duplicate songs using another script from Doug's site.
I used the ideas from your script and just did
tell application 'Finder'
try
open item 'Macintosh HD:applications:images:CalculatingCrew.dmg'
end try
repeat until name of every disk contains 'Crew'
delay 1
end repeat
open item 'Crew:Calculating Crew'
end tell
and it works great - for MOST applications. But some mount the image and then say that 'the CD can't be found. Please insert it and try again.'
Can anyone help me with this problem? Thanks!
How To Unmount A Tv
In reply to mmatties's question: the problem you came across (the app can't find the image) is EXACTLY what the script in the hint is designed to fix. It fixes the problem by NOT using the Finder to mount the disk, but by using a shell script. Try the script in the hint itself and see whether it solves the problem for you. (But reboot first, because after the application can't find the image, it will never see it again until you reboot.)
A more flexible perl solution, in case you have multiple mounts, in multiple locations. Also remote friendly
[code]
#!/usr/bin/perl
$command=$ARGV[0];
$name=$ARGV[1];
### Add your disk image name, and location here
%directories=('all','~/Desktop/all.dmg','none','~/Desktop/none.dmg');
if($command eq 'mount')
{ system 'hdiutil mount $directories{$name}'; }
elsif($command eq 'unmount')
{
$mount_data = `mount`;
($dev)=($mount_data=~/(/dev/diskd{1,2}).*?/Volumes/$name/);
system 'hdiutil detach $dev';
}
else
{ print 'sorry, must select mount or unmount';}
[/code]
Save as diskmnt.pl, make it executible by running chmod a+x diskmnt.pl, then dump it into /usr/local/bin
Works great for me, and is a bit more compact and easier for a command line guy like me to understand.
Any thoughts suggestions, let me know
cheers
-rick
How To Unmount Dmg From Finder Computer
Re: rattler14's script -
Handy, thanks. However, a few comments/questions:
1) When I tried to put the file in /usr/local/bin/ is gave me a permissions error and I had to login as root to place it. Is that normal?
2) Being a bit of a *nix newbie is there any other command to run it than:
/usr/local/bin/diskmnt.pl ? Maybe my path needs updating?
3) I would like to use this ( or something like it ) to unmount one of my main drive's three partitions. Is that possible? Currently when I run it, it unmounts both of the non-running partitions.
Thanks for your time and help in these matters.
Any idea what the proper syntax is to work around this?
Relevant bits:
The solution to oshea's question seems to be something like this:
If you need to mount a disk image whose name in the Finder has a space or ampersand or other non-alphanumeric character, then you probably need to use two different variables instead of the one 'diskname' variable in the original script.
The variable diskname should be the name in the Finder, as in the original script, and this should be used in the pure-Applescript parts of the script (the parts that don't use shell scripts).
Another variable would be called something like unixdiskname, and this would use escaped characters, like this:
unixdiskname: 'Nemo UMF'
or
unixdiskname: 'This & That'
Then, in the original script's shell script commands, replace 'diskname' with 'unixdiskname'. I haven't tested this enough to be certain it works, but I think it will.
Kevin O'Shea pointed out (in a private message) that the original script can be speeded up by modifying the shell script with 'hdiutil attach' - just add the -noverify switch at the end of the shell script, so that the last bit in quotation marks reads:
' -mount required -noverify'
Seems to work for me.
The reason for this is that there are two layers of escaping needed. 1) Applescript uses the character to escape things in any string; and 2) the shell itself uses to escape things.
So, when inside a string Applescript sees the character, it wants the next character to be a valid escape character. You actually want a literal in the string (so that the shell will see it, and treat is as an escape character).
property unixdiskname : 'Reader Rabbit Toddler'
will do the trick for you.