Mac OSX捆绑包的图标

时间:2013-01-16 15:36:47

标签: macos icons bundle finder

我编译了一个名为MyBundle.bundle的Mac OSX软件包,它用作另一个应用程序的插件。我希望捆绑包具有唯一的图标,因此我将Info.plist文件设置为:

<key>CFBundleIconFile</key>
<string>MyIcon.icns</string>

并将文件MyIcon.icns放在bundle的MyBundle.bundle / Contents / Resources文件夹中。

这不起作用,查找程序显示该包的通用图标并忽略指定的MyIcon.icns文件。如果我将软件包的扩展名从.bundle更改为.app,则图标会立即显示 - 所以我知道Info.plist是正确的。

我找到了一个可以模拟用户在包上复制和粘贴图标的工作:

我将图标作为“icns”类型和id -16455的资源添加到包的.rsrc文件中。

我致电

/Developer/Tools/SetFile -a BC MyBundle.bundle

这有效,但真的很蹩脚。从Mac OS 10.8开始,SetFile需要永远执行。

我的问题:是否有强迫Finder在没有这些黑客的情况下显示捆绑的图标?

顺便说一句:关于同一主题有一个问题:Set icon of non app mac os x bundle;但唯一的答案是指示如何创建一个图标,并没有帮助解决问题。

4 个答案:

答案 0 :(得分:4)

您可以使用NSWorkspace

[[NSWorkspace sharedWorkspace] setIcon:(NSImage *)image forFile:(NSString *)fullPath options:(NSWorkspaceIconCreationOptions)options]

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/ApplicationKit/Classes/NSWorkspace_Class/Reference/Reference.html

答案 1 :(得分:4)

此解决方案会为您的所有.bundle关联相同的图标。我不确定你需要什么(或者你的每个.bundle需要一个特定/不同的图标)。

如果您可以修改应用包:您可以定义要与应用关联的文档类型。为此,您必须编辑应用包:

  • 将插件图标放在应用资源中:TheOtherApp.app/Contents/Resources/MyIcon.icns
  • 编辑TheOtherApp.app/Contents/Info.plist并添加如下内容:

     <key>CFBundleDocumentTypes</key> 
     <array>
      <dict>
        <key>CFBundleTypeName</key>
        <string>TheOtherApp Plugin</string>
        <key>CFBundleTypeRole</key>
        <string>None</string>
        <key>CFBundleTypeIconFile</key>
        <string>FlexoDocument.icns</string>
        <key>CFBundleTypeExtensions</key>
        <array>
          <string>bundle</string>
        </array>
        <key>LSTypeIsPackage</key>
        <string>true</string>
      </dict>
    </array>
    

有关developer.apple.com上的CFBundleDocumentTypes的更多信息

您可能需要重新启动取景器和/或应用以查看效果。

答案 2 :(得分:0)

尝试不使用.icns文件中的plist.info部分:

<key>CFBundleIconFile</key>
<string>MyIcon.icns</string>

将其更改为:

<key>CFBundleIconFile</key>
<string>MyIcon</string>

我使用这种技术在这里创建了一个带有自定义图标的包:https://gist.github.com/Noitidart/6a2cbe0b4c74499765be

答案 3 :(得分:-3)

简单方法:打开图片文件选择所有副本,点击项目,apple-i获取信息,点击弹出窗口中的图标和apple-v。

这就像它变得容易一样。