【发布时间】:2011-01-26 15:07:51
【问题描述】:
如何为不是应用程序的捆绑包设置图标?我尝试使用 CFBundleIconFile,但它不起作用(尽管如果我只是将捆绑扩展名更改为 .app,图标将更改为所需的)。是否有另一个键,或者唯一的方法是为目录设置图标?如果是这样,是否已经有一些脚本可以从命令行执行此操作(Xcode 运行脚本)?
【问题讨论】:
如何为不是应用程序的捆绑包设置图标?我尝试使用 CFBundleIconFile,但它不起作用(尽管如果我只是将捆绑扩展名更改为 .app,图标将更改为所需的)。是否有另一个键,或者唯一的方法是为目录设置图标?如果是这样,是否已经有一些脚本可以从命令行执行此操作(Xcode 运行脚本)?
【问题讨论】:
如果您需要从 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 的数据。
【讨论】:
Answer from similar (duplicate) question:
[[NSWorkspace sharedWorkspace]
setIcon:(NSImage *)image
forFile:(NSString *)bundlePath
options:0];
【讨论】:
/Contents/Resources/appicon.icns 内的文件。即使我重新启动它使用我设置的新图标,但我的旧图像仍保留在资源文件夹中,这让我觉得除了简单的刷新之外还有一些棘手的事情正在发生。你能分享你对这个@yairchu的想法吗