以编程方式更改命令行应用程序图标

Change command line app icon programmatically

我已经为 macOS 创建了一个 swift 命令行应用程序(没有 XCODE,只是一个简单的 .swift 文件),用于构建 macOS 安装程序。

当我 运行 带有 sudo swift install.swift 的应用程序时,该应用程序打开时会显示一个带有终端应用程序设计的图标:

Icon

我想从代码中更改那个图标,可以吗?我正在使用 Appkit。

您可以通过设置 NSApplicationapplicationIconImage 属性 来更改图标。也就是说,如果您可以获得图像。由于您的程序不是捆绑应用,因此提供图像并不容易。

不过,当您的程序退出时,将不可避免地出现视觉故障。它的图标将恢复为 "exec" 图标,因为它在消失前会在 Dock 中缩小。此外,如果图标最终出现在 Dock 的最近使用的应用程序部分,它也将是 "exec" 图标。换句话说,只要程序 运行s.

以编程方式设置的图标就会持续存在

顺便说一下,运行 具有 root 权限的高级框架显然是不明智的。它打开了一个没有真正进行安全审计的大型攻击面。您可能希望将您的程序分成用户应用程序和特权助手。