【问题标题】:Setting an icon for a symbolic link为符号链接设置图标
【发布时间】:2014-07-17 00:47:04
【问题描述】:

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

我的第一个问题是其中一个别名指向 Excel 电子表格,但每次运行更新应用程序时都会替换此电子表格。这使得指向废纸篓中电子表格的别名和新文件完全没有别名。我的更新程序应用程序是用 Mono 编写的 - 因此没有简单的方法可以调用 Mac OS 来重新创建别名、重置图标并将其放在桌面和 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 电子表格启动后继续运行,并且 bash 脚本的别名也不会接受图标,即使是手动应用也是如此。

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

欢迎提出建议。

谢谢,尼尔

附:毫无疑问,我是一个 MAC 新手——我最初是为 PC World 的客户开发这个产品,但后来他反复收到为 Mac 翻译它的请求,所以,我在这里努力学习开发Mac。

【问题讨论】:

    标签: macos bash


    【解决方案1】:

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

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

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

    (注意:路径需要存在才能正常工作。)

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

    【讨论】:

    • 我在翻译您的建议时显然犯了一些错误,因为我收到以下命令错误: osascript -e 'tell application "Finder" to make new alias at ("/Users/macbook/Desktop/ Mortgage Mentor") to (("/Users/Shared/Mortgage Mentor/MOME Menu.xls") as POSIX file)' 29:156:执行错误:Finder 出错:AppleEvent 处理程序失败。 (-10000)
    • 在试图找出别名时我可能使用了错误的术语,它是一个符号链接,而不是一个符号别名。这篇文章有一些非常好的信息:gigaom.com/2011/04/27/how-to-create-and-use-symlinks-on-a-mac。使用标准别名的问题还在于它链接到唯一文件 ID - 我的应用程序每次运行时都会替换此文件,因此别名现在指向垃圾箱。我需要一种创建别名的方法,该别名的图标指向文件夹和文件名,而不是文件 ID。
    • 别名包含文件路径和文件 ID。如果原始文件根本不存在(即使在废纸篓中),别名将回退到使用该路径。 WRT 翻译,你需要对 at 参数执行相同的 (("path") as POSIX file) 技巧,就像 to 参数一样,如果你不想在桌面上使用它。
    • 嗯 - 所以如果在下载过程中 - 我可以确保被删除的文件不会移动到垃圾箱,例如完全删除 - 那么桌面别名实际上将作为符号链接工作。感谢您的建议,我会看看我是否可以修改我的下载器以完全吹掉一个文件,看看它是否有效。如果它有效,这正是我所需要的。
    • 抱歉,似乎不是可执行文件的别名不会使用图标。当我创建别名,然后尝试使用命令行程序 (SetFileIcon) 或使用 GetInfo 打开别名,解锁它,然后将图标文件拖到角落以替换当前图标时,它不起作用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2018-09-06
    • 1970-01-01
    • 2021-06-16
    • 2020-10-22
    • 1970-01-01
    相关资源
    最近更新 更多