Re: Packages vs bundles vs folders etc
Re: Packages vs bundles vs folders etc
- Subject: Re: Packages vs bundles vs folders etc
- From: Peter Ammon <email@hidden>
- Date: Sun, 10 May 2009 23:02:17 -0700
On May 10, 2009, at 10:43 PM, Chris Idou wrote:
>> Would it be fair to say that if a path is a directory, and if the
kMDItemContentType != public.folder then
NSWorkspace.isFilePackageAtPath would
>return YES?
>
>No. A non-package directory may not even conform to
public.folder. For example, volume mount points have the type ID
public.volume, which does
>conform; but frameworks have the type ID public.framework, which
does not conform.
But isn't a framework a package, thus making my statement correct?
If a framework is not a package, then what specifically makes a
package a package that a framework doesn't fit?
Frameworks are not packages. A package is a directory that is
presented as a single file to the user, but frameworks are shown as
folders and are browsable like other folders.
You can check the UTI hierarchy in the UTCoreTypes.h header (try open -
h UTCoreTypes.h).
Perhaps I should state my question more explicitly. I'm trying to
figure out what things should be copied atomically. When a directory
is really a bundle (is a bundle == package?), then it must be
considered as one unit. If it's just a folder, then the files
therein have their own unique reasons for existing. But I'm not
sure which API exactly will give me the distinction I want to make.
If you copy two folders, Finder reports the total number of items
contained within them; but if you copy two applications, Finder
reports only two items. Is that the sort of distinction you want to
make?
If so, I think you're on the right track. On Leopard, I would get the
UTI of a file via -[NSWorkspace typeOfFile: error:], and then see if
it conforms to kUTTypeFolder via -[NSWorkspace type:fileType
conformsToType:(NSString *)kUTTypeFolder]. If it does NOT conform, it
should be treated as a single item.
If you need Tiger compatibility, you can do the same thing, except you
would use LaunchServices functions like LSCopyItemAttribute().
-Peter
_______________________________________________
Cocoa-dev mailing list (email@hidden)
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:
This email sent to email@hidden