14

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

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

并将文件 MyIcon.icns 放在包的 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

4 回答 4

5

您可以使用 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

于 2013-01-25T05:04:31.740 回答
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的更多信息

您可能需要重新启动查找器和/或应用程序才能看到效果。

于 2013-01-26T14:01:24.420 回答
0

尝试.icns在文件中不包含该部分plist.info

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

将其更改为:

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

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

于 2015-01-13T16:31:43.773 回答
-4

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

就这么简单。

于 2013-01-25T04:40:34.653 回答