是否可以在Mac上注册文件夹扩展名以使用特定应用程序打开(类似.app文件夹的行为以特殊方式运行)?如果有可能,那怎么样? 我正在寻找类似于此的解决方案:related question,仅适用于文件夹,而不是文件。
我查看了UTI UTIs的参考,但我没有找到任何合适的标识符(例如public.folder-extension)。
是否可以这样做?在GUI上我没有看到任何方法(对于具有特定扩展名的文件夹,没有“打开方式...”选项)。 [重要提示:我不想在GUI上执行此操作,这只是说明为什么我认为这可能是不可能的。]
答案 0 :(得分:3)
我发现了一种适合我的方式(如果其他人也遇到这个问题):
在应用程序包的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>
将ext1,ext2替换为您要支持的扩展名,documentlogo.icns替换为文档图标的名称(必须位于Application Bundle.app/Contents/Resources/documentlogo.icns中)和我的捆绑包类型名称,包含合理的名称)
在此示例中,要识别为应用程序包的任何文件夹必须具有扩展名ext1或ext2,并且必须包含具有8“?”的Contents / PkgInfo文件。所有其他内容由您决定。
我的解决方案基于这些来源,Document Packages,Information Property List Key Reference,Document 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.textmate
或com.sublimetext.2
。
替代方法,如果您使用Quicksilver:为“当前选择(代理对象) - >打开方式 - >打开您的应用程序”添加自定义键盘触发器。我发现每当你在Finder中的文件夹上使用新创建的键盘快捷键时,这也会创建(并且有力地重新创建)上述关联。