Mac OSX:以编程方式的文件夹扩展名关联

时间:2011-12-14 10:02:54

标签: macos associations

是否可以在Mac上注册文件夹扩展名以使用特定应用程序打开(类似.app文件夹的行为以特殊方式运行)?如果有可能,那怎么样? 我正在寻找类似于此的解决方案:related question,仅适用于文件夹,而不是文件。

我查看了UTI UTIs的参考,但我没有找到任何合适的标识符(例如public.folder-extension)。

是否可以这样做?在GUI上我没有看到任何方法(对于具有特定扩展名的文件夹,没有“打开方式...”选项)。 [重要提示:我不想在GUI上执行此操作,这只是说明为什么我认为这可能是不可能的。]

2 个答案:

答案 0 :(得分:3)

我发现了一种适合我的方式(如果其他人也遇到这个问题):

  1. 在应用程序包的Info.plist文件中添加以下代码段:

    <key>CFBundleDocumentTypes</key>
    <array>
        <dict>
           <key>CFBundleTypeExtensions</key>
           <array>
               <string>ext1</string>
               <string>ext2</string>
           </array>
           <key>CFBundleTypeIconFile</key>
           <string>documentlogo.icns</string>
           <key>CFBundleTypeName</key>
           <string>My Bundle Type Name</string>
           <key>CFBundleTypeRole</key>
           <string>Viewer</string>
           <key>LSTypeIsPackage</key>
           <true />
        </dict>
    </array>
    
  2. 将ext1,ext2替换为您要支持的扩展名,documentlogo.icns替换为文档图标的名称(必须位于Application Bundle.app/Contents/Resources/documentlogo.icns中)和我的捆绑包类型名称,包含合理的名称)

  3. 在此示例中,要识别为应用程序包的任何文件夹必须具有扩展名ext1或ext2,并且必须包含具有8“?”的Contents / PkgInfo文件。所有其他内容由您决定。

  4. 我的解决方案基于这些来源,Document PackagesInformation Property List Key ReferenceDocument Packages Examples

    请纠正我,如果有更好/更有效的方法,因为我仍然有一些疑问(例如:我认为,这应该适用于普通文件,而不仅仅是包。那么我们为什么需要LaunchServices的方式是什么?应用程序包是默认的,LaunchServices是每个用户自定义它的方式吗?)

答案 1 :(得分:1)

我发现如何手动执行此操作,我将在此处列出供其他人查找,并以编程方式执行此操作,您可以将此信息与答案结合起来:https://superuser.com/questions/273756/how-to-change-default-app-for-all-files-of-particular-file-type-through-terminal

您必须安装XCode。打开终端或iTerm并:

cd ~/Library/Preferences
open com.apple.LaunchServices.plist

添加或覆盖以下条目(使用Cmd + F搜索“文件夹”):

LSHandlerContentType String public.folder
LSHandlerRoleAll String com.somecompany.someproduct

com.somecompany.someproduct替换为现有名称 - 您可以在同一目录(~/Library/Preferences)中看到这些内容 - 它们以.plist结尾 - 例如com.macromates.textmatecom.sublimetext.2

替代方法,如果您使用Quicksilver:为“当前选择(代理对象) - >打开方式 - >打开您的应用程序”添加自定义键盘触发器。我发现每当你在Finder中的文件夹上使用新创建的键盘快捷键时,这也会创建(并且有力地重新创建)上述关联。