What might be useful is to not rely on the default application and use openURL:withApplication: to make sure Disk Utility mounts the image, not another tool the user did associate with .dmgs or .sparsebundle
On 16 Mar 2014, at 05:35, Luther Baker <lutherba...@gmail.com> wrote: > Indeed! > > That works perfectly ... as also does its antithesis NSWorkspace > unmountAndEjectDeviceAtPath > > You are nothing short of a genius. > > > > On Sat, Mar 15, 2014 at 4:44 PM, Michael Starke > <michael.sta...@hicknhack-software.com> wrote: > I might be missing something, but can't you just open the file with > [[NSWorkspace sharedWorkspace]openURL:<fileURL>]? > > ___m i c h a e l s t a r k e____ > geschäftsführer > HicknHack Software GmbH > www.hicknhack-software.com > > ___k o n t a k t____ > +49 (170) 36 86 1 36 > cont...@hicknhack.com > > ___H i c k n H a c k S o f t w a r e G m b H____ > geschäftsführer - maik lathan | andreas reischuck | michael starke > bayreuther straße 32 > 01187 dresden > amtsgericht dresden HRB 30351 > sitz - dresden > > On 15.03.2014, at 21:56, Luther Baker <lutherba...@gmail.com> wrote: > >> I'm an iOS developer talking a walk on the OSX side and have a question >> about programmatically mounting sparse bundles ... or really just any dmg. >> >> My experimental project is to write a little statusbar application to mount >> and unmount disk images. I've created a few of these images in my own >> "Volumes" directory as follows: >> >> /Users/me/Volumes/me.sparsebundle >> >> For the time being, I am hard-wiring logic in a menu selection handler to >> actually mount these objects. >> >> I've been digging into Disk Arbitration and I've come up with the following: >> >> - (IBAction)mountMe:(id)sender { >> DASessionRef sessionRef = DASessionCreate(kCFAllocatorDefault); >> CFURLRef volumeURLRef = (__bridge CFURLRef)[NSURL fileURLWithPath:@ >> "/Users/me/Volumes/me.sparsebundle"]; >> DADiskRef diskRef = DADiskCreateFromVolumePath(kCFAllocatorDefault, >> sessionRef, volumeURLRef); >> CFURLRef mountPath = NULL; >> DADiskMountOptions mountOptions = kDADiskMountOptionDefault; >> DADiskMountCallback mountCallback = NULL; >> void *context = NULL; >> DADiskMount(diskRef, mountPath, mountOptions, mountCallback, context); >> CFAllocatorDeallocate(kCFAllocatorDefault, diskRef); >> CFAllocatorDeallocate(kCFAllocatorDefault, sessionRef); >> } >> >> *ANY* suggestions, even tangental (especially around memory management) are >> fair game here. I'd appreciate any input as I'm just starting to read about >> allocation, etc. >> >> But more to the point, I don't think DADiskCreateFromVolumePath is what I >> want. It seems that DADiskRef is NULL when I run this. Clearly, the most >> intimidating method in there is DADiskCreateFromIOMedia ... and I'm afraid >> that is the one I'm going to have to use. >> >> And, am I really trying to mount a "disk" as Disk Arbitration understands >> it? I'm not yet dealing with things like fstab, etc which I know very >> little about -- but should I start digging that way? I did come across a >> nice github project <http://tommetge.github.io/VolumeManager/> but >> >> unfortunately I can't actually find any methods in there to mount ... only >> things like umount or eject. Notably, the open source project does use >> 'getmntinfo' which leads me to look at the BSD mount man page ... but I >> before going there I want to make sure I'm not _supposed_ to do this in >> within Disk Arbitration. There is a DADiskCreateFromBSDName which seems >> like it might be similar? >> Anyway, any thoughts on this? And in general, is this fundamental stuff >> covered in exemplary fashion anywhere? Would the OSX Internals books I've >> seen dive into this? I'm assuming that if I've encryped my sparsebundle >> that I'd be prompted by the OS for my password, which is fine for my first >> pass but I'd eventually like to subsume that logic within my app - if for >> no other reason than to simply better understand the partition management >> frameworks. >> >> Thanks in advance for even 1 brief minute of your time. I'll begin trying >> the alternatives mentioned above in Disk Arbitration. >> -Luther >> _______________________________________________ >> >> Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) >> >> Please do not post admin requests or moderator comments to the list. >> Contact the moderators at cocoa-dev-admins(at)lists.apple.com >> >> Help/Unsubscribe/Update your Subscription: >> https://lists.apple.com/mailman/options/cocoa-dev/michael.starke%40hicknhack-software.com >> >> This email sent to michael.sta...@hicknhack-software.com > ___m i c h a e l s t a r k e____ geschäftsführer HicknHack Software GmbH www.hicknhack-software.com ___k o n t a k t____ +49 (170) 3686136 cont...@hicknhack.com ___H i c k n H a c k S o f t w a r e G m b H____ geschäftsführer - maik lathan | andreas reischuck | michael starke bayreuther straße 32 01187 dresden amtsgericht dresden HRB 30351 sitz - dresden _______________________________________________ Cocoa-dev mailing list (Cocoa-dev@lists.apple.com) Please do not post admin requests or moderator comments to the list. Contact the moderators at cocoa-dev-admins(at)lists.apple.com Help/Unsubscribe/Update your Subscription: https://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com This email sent to arch...@mail-archive.com