macos - 为符号链接(symbolic link)设置图标

标签 macos bash

我正在尝试为客户完成一个产品,需要在桌面和 Dock 上创建两个别名,以便最终用户可以轻松启动产品中的两个主要应用程序。安装脚本通过为各种文件夹和文件设置图标来完成安装。安装会在/Applications 文件夹下创建一个文件夹,在/Users/Shared 文件夹下创建另一个文件夹。这些文件夹中的每一个都使用 SetFileIcon(共享软件应用程序)应用了一个图标。然后该脚本在桌面上创建两个别名,并再次使用 SetFileIcon 为每个别名应用一个图标。

我的第一个问题是其中一个别名指向 Excel 电子表格,但每次运行更新应用程序时都会替换该电子表格。这使得别名指向废纸篓中的电子表格,并且新文件完全没有别名。我的更新程序应用程序是用 Mono 编写的 - 因此没有简单的方法调用 Mac 操作系统来重新创建别名、重置图标并将其放在桌面和 Dock 上。

我尝试通过使用脚本命令为电子表格创建一个符号别名然后应用一个图标来解决这个问题:

SetFileIcon "/path/to/spreadsheeticonfile" "/path/to/spreadsheet.xls"
ln -s "/path/to/updater" "/Users/$USER/updateralias"
ln -s "/path/to/spreadsheet.xls" "/Users/$USER/spreadsheetalias"
SetFileIcon "/path/to/iconfile" "/Users/$USER/spreadsheetalias"

第一个 SetFileIcon 命令工作正常,电子表格现在有一个与之关联的新图标。第一个“ln -s”也工作正常,并且创建了一个新的 slias,并带有与之关联的更新程序图标。第二个“ln -s”创建电子表格的别名,但有一个纯白色图标,而不是与电子表格关联的图标。最后一个 SetFileIcon 是我在别名上强制使用图标的绝望尝试 - 这也不起作用。

我已经尝试创建一个启动 excel 电子表格的 bash 脚本,它似乎接受一个图标,但似乎有一个类似的 .但在 excel 电子表格启动后,它也会让终端 session 运行,并且 bash 脚本的别名也不会接受图标,即使是手动应用也是如此。

2个问题: 1. 有什么方法可以将图标分配给有效的符号别名。即使使用 GetInfo 手动设置别名上的图标也不起作用。 2. 无法使用别名,是否有任何解决方法可以让我在安装时在用户桌面和他们的停靠栏上有一个链接,该链接具有我们想要使用的漂亮图标,而不是通用的 excel 白色方 block 。我只需要一种简单的方法来将带有图标的链接放到用户桌面上另一个目录中的文件中,该文件将在该文件定期更新后继续存在,并在安装时执行。简单。

欢迎提出建议。

谢谢,尼尔

附言不用说我是 MAC 新手——我最初是为 PC World 的客户开发这个产品,但后来他反复要求翻译它到 Mac,所以,我在这里努力学习开发Mac。

最佳答案

符号链接(symbolic link)与别名不同。 (并且没有“符号别名”这样的东西。)您不能设置符号链接(symbolic link)的图标,因为它不是普通文件,因此不能在其上设置适当的属性。

创建别名的方法有很多种,但一种简单的方法是使用 AppleScript:

osascript -e 'tell application "Finder" to make new alias at (path to desktop folder) to (("/path/to/file") as POSIX file)'

(注意:此路径需要存在才能起作用。)

完成此操作后,您应该能够在其上设置图标。

关于macos - 为符号链接(symbolic link)设置图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23900709/

相关文章:

macos - 如何从 Intel Mac 在 Silicon Mac M1 上运行 Dockerfile

macos - 命令行访问 OS X 的钥匙串(keychain) - 如何获取与帐户关联的电子邮件地址

node.js - NPM 损坏的 mime-db 丢失

C++ 在 execv 中运行 grep 搜索可执行路径

bash - 无法启动 docker nginx

linux - 通过 bash shell 选择交互式菜单选项

linux - 比较/区分具有不同行终止符的两个文件

linux - 如何删除以特定字母开头的文件

Bash 参数替换和扩展一气呵成

python-3.x - Mac PyQt5 菜单栏在取消聚焦 - 重新聚焦应用程序之前不处于事件状态