2011-12-14 64 views
2

是否有可能註冊一個文件夾擴展在Mac上打開一個特定的應用程序(類似.app文件夾的行爲以特殊的方式)?如果有可能,那麼如何? 我正在尋找類似於此的解決方案:related question,僅適用於文件夾,不適用於文件。Mac OSX:文件夾擴展名關聯編程

我看了看UTI UTIs的參考資料,但是我沒有找到任何看起來合適的標識符(例如public.folder-extension)。

是否有可能做到這一點?在GUI上,我沒有看到任何方法做到這一點(對於具有特定擴展名的文件夾,沒有「Open With ...」選項)。 [重要:我不想在GUI上這樣做,這只是一個說法,爲什麼我認爲它可能是不可能的。]

回答

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與文件的圖標的名稱(必須位於應用程序Bundle.app/Contents/Resources/documentlogo.icns)以及My Bundle Type Name(您的軟件包的明智名稱)

  3. 在此示例中,任何要識別爲應用程序包的文件夾必須具有擴展名ext1或ext2,並且必須包含Content/PkgInfo文件,其中包含8個「?」。所有其他內容取決於你。

我基地我對這些數據源,Document PackagesInformation Property List Key ReferenceDocument Packages Examples解決方案。

請糾正我,如果有更好/更有效的方式來做到這一點,因爲我仍然有一些疑慮(例如:正如我所見,這應該也適用於普通文件,而不僅僅是軟件包。還需要LaunchServices方式嗎?應用程序捆綁了默認設置,而LaunchServices是每個用戶定製它的方式嗎?)

0

我發現瞭如何手動執行此操作,我將在此處列出以供其他人查找並執行以編程方式,您可以將此信息與答案結合在一起: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文件夾中使用新創建的鍵盤快捷鍵,這也會創建(並大力重新創建)上述關聯。