【问题标题】:Set icon of non app mac os x bundle设置非 app mac os x bundle 的图标
【发布时间】:2011-01-26 15:07:51
【问题描述】:

如何为不是应用程序的捆绑包设置图标?我尝试使用 CFBundleIconFile,但它不起作用(尽管如果我只是将捆绑扩展名更改为 .app,图标将更改为所需的)。是否有另一个键,或者唯一的方法是为目录设置图标?如果是这样,是否已经有一些脚本可以从命令行执行此操作(Xcode 运行脚本)?

【问题讨论】:

    标签: macos icons bundle


    【解决方案1】:

    如果您需要从 CLI 中执行此操作...涉及更多...

    首先,您需要将CFBundleIconFile 字符串添加到您的捆绑包中

    YourThing.bundle/Contents/Info.plist
    

    这里是开发者可以到达的地方 为捆绑包指定自定义图标。 此键包含文件的名称 在捆绑包的资源文件夹中 持有图标。 TextEdit 保持其 名为 Edit.icns 文件的文件中的图标, 但是没有关于什么的规则 文件名必须是。

    也就是说,您要么需要一个 ICNS 文件,要么可以从 Utility (which includes its source code) 中通过命令行从图像文件生成 ICNS 的 follow these instructions

    $ ./makeicns 
    

    用法:makeicns [k1=v1] [k2=v2] ...

    键和值包括: 512:512x512 图标变体的输入图像名称 256:256x256 图标变体的输入图像名称 128:128x128 图标变体的输入图像名称 32:32x32 图标变体的输入图像名称 16:16x16 图标变体的输入图像名称 in:所有没有明确名称的变体的输入图像的名称 out:输出文件的名称,默认为第一个非空输入名称, 但带有 icns 扩展名

    例子:

      makeicns -512 image.png -32 image.png
    

    创建只有 512x512 和 32x32 变体的 image.icns。

      makeicns -in myfile.jpg -32 otherfile.png -out outfile.icns
    

    创建大小为 512 的 outfile.icns, 256、128 和 16 包含数据 来自 myfile.jpg,大小为 32,包含来自 otherfile.png 的数据。

    【讨论】:

      【解决方案2】:

      Answer from similar (duplicate) question:

      [[NSWorkspace sharedWorkspace]
        setIcon:(NSImage *)image
        forFile:(NSString *)bundlePath
        options:0];
      

      【讨论】:

      • 这个解决方案对我有用,但是它没有更改我的应用程序包中 /Contents/Resources/appicon.icns 内的文件。即使我重新启动它使用我设置的新图标,但我的旧图像仍保留在资源文件夹中,这让我觉得除了简单的刷新之外还有一些棘手的事情正在发生。你能分享你对这个@yairchu的想法吗
      • @Noitidart:正如我提到的,我在重复的问题(链接)中找到了它。 “Fruity Geek”在那边给出了答案和苹果参考的链接,我没有任何进一步的细节..
      • 谢谢我在那里评论问他:)
      • 这就像在 Finder 的“获取信息”窗口中进行操作一样。它不会更改捆绑包中的图标文件。移动到另一台机器时它不会持续存在吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-20
      • 2015-05-18
      • 2013-07-27
      • 1970-01-01
      相关资源
      最近更新 更多