Mac OS X Finder 足够自负,可以将任何非 Mac 设备显示为带有 BSOD 的 PC 图片,但我想知道是否可以添加其他设备,以便检测到我的 Ubuntu 机器并显示 Ubuntu PC 的图片,而我的 Windows PC 则显示 Windows 崩溃的图片等。
我知道 public.generic-pc.icns 存在并且可以被替换,但我对替换它本身不感兴趣,更感兴趣的是让 finder 识别其他设备(或了解它如何识别其他 Apple 设备)并将自定义图标映射到它们。
有什么线索吗?
答案1
看来我已经很接近了,只是我没有让我的机器正确地宣传自己。
我终于让它工作了:
我使用的方法如下:
首先,在 Mac 上,我通过复制并粘贴文件夹中的现有捆绑包(例如 MobileDevices.bundle 或 MachineTypes.bundle)创建了一个名为“ComputerTypes”的自定义捆绑包
/System/Library/CoreServices/CoreTypes.bundle/Contents/Library
。然后,我打开
Contents/Info.plist
XCode Plist 编辑器并编辑所有详细信息以创建自定义包,更改包标识符、名称等。我删除了“UTExportedTypeDeclarations”键中的所有现有条目,然后为每个设备创建了一个新条目。每个设备条目都有一个“UTTypeConformsTo”、“UTTypeDescription”、“UTTypeIconFile”、“UTTypeIdentifier”和“UTTagSpecification”,其中“UTTagSpecification”字典包含键“com.apple.device-model-code”中的数组,其中包含要接受的所有 mDNS _device-info._tcp 标识符。UTTypeIconFile 指的是 Resources 文件夹中的 icns 文件。
然后我将该包保存到
/System/Library/CoreServices/CoreTypes.bundle/Contents/Library
文件夹并重新启动。在另一台机器上,我需要设置以宣传 _smb._tcp 服务以及 _device-info._tcp TXT 记录,像往常一样,只是使用自定义型号名称而不是 Mac 产品名称。
重新启动 Mac 后,它应该如上图所示。
我将完成的包上传到http://dl.dropbox.com/u/4140005/ComputerTypes.bundle.zip举个例子。
答案2
这可能只值得对亚当的回答进行评论,但我需要格式化。
在 Windows 中,假设已安装 iTunes 或 Bonjour for Windows,您可以使用以下命令宣传 samba 共享:
- 打开两个 cmd 提示符。
运行以下命令(在不同的控制台中):
dns-sd -R 计算机名称 _device-info._tcp 本地 445 型号=Xserve3,1
dns-sd -R 计算机名 _smb._tcp 本地 445
Dns-sd 不会退出,如果您按 Ctrl-C 或关闭 cmd,共享将从 Finder 中消失。尽管 Adam 提供了有用的示例文件(这可能是 10.6 与 10.8 的问题……他的和 10.8 的 plist 之间存在差异),我只能设法使用默认的 OSX 图标。此外,我花了很长时间才弄清楚如何让 Windows 运行此命令并在开机/关机和唤醒/睡眠时关闭它(不过,要从 bat 脚本关闭 dns-sd,您只需使用 taskkill)。
答案3
由于声誉问题,我无法发表评论,但我想补充一下,因为现在人们可能会遇到它并想实现这一点。在 Sierra 的 SIP 实现中,由于无法将文件复制到任何 CoreServices 子目录,Adam 的方法默认不再有效。您必须先禁用 SIP。
在我进一步说明之前,您必须了解 SIP 是 Apple 采取的一项保护措施,以确保您的系统完整性不受损害。
我不会深入讨论作为一名应用程序开发人员我对 SIP 的看法,但我可以说我并不总是与 Apple 的决策同步。
去做这个:
重启 Mac。听到提示音后,按住 CMD+R 直到桌面开始出现。从顶部的“实用程序”菜单中,选择“终端”输入“csrutil disable”并按回车键。输入“reboot”并按回车键。
SIP 现已禁用。我一般不关心 SIP,但我知道我是少数派。另外,我不希望 Apple 对我太生气。话虽如此,我建议如果你这样做是为了替换系统图标,请在完成后立即重新启用 SIP。为此,请按照说明禁用,但将“禁用”一词替换为“启用”。