在Mac上以编程方式更改桌面应用程序图标。 2019年

时间:2019-02-13 13:40:04

标签: node.js macos shell electron desktop-application

有没有一种方法可以更改Macbook台式机应用程序上的图标,从而复制在Finder窗口中复制/粘贴图标时发生的相同操作?通过终端,node.js还是其他?到目前为止,我已经尝试过:

1)通过终端,删除并替换图标本身,我不喜欢这样,因为它会完全删除原始图标,并且不适用于每个应用程序。

2)通过node.js和终端,创建一个图标?文件,但是这也不在每个程序上都起作用,并且我在权限访问方面遇到了麻烦。如果有人对此有解决方案,我想听听。

3)使用applescript可以正常工作,但是一次遍历多个图标实在太麻烦了。

我已经搜索了好几天,但是信息非常有限或过时。我将不胜感激任何帮助!

1 个答案:

答案 0 :(得分:1)

要更改应用程序的图标,我将shell脚本与applescript一起使用。 目标是在应用程序info.plist中更改“图标文件”,并将图标(文件)复制到应用程序的资源中。 “ application” .app / Contents / Resources /“。 在打开窗口以选择必须更改其图标的应用程序之后,所有操作都在一个小滴中完成,在该小滴上拖动所需的图标。  使用plutil,我将文件info.plist转换为xml1(我将其保存在“ .app / Contents / infoo.plist”下,以避免出现任何问题并找到原始文件)。要更改值“ Icon文件”,我使用“ / usr / libexec / PlistBuddy”和“ -c Set:” 要查看更改,您必须启动应用程序(其图标已更改),在扩展坞中,您必须看到新图标(如果扩展坞选项处于活动状态)

Droplet脚本下方

    global testdir
on open draggedItems
    repeat with currentItem in draggedItems
        set icon_image_file_string to POSIX path of (draggedItems)
        set {name:Nm, name extension:Ex} to info for POSIX file icon_image_file_string
        set Nm to do shell script "echo " & Nm & " | sed 's#." & Ex & "##'"

        set testdir to POSIX path of (choose file of type {"APPL"} with prompt "Choisissez  l'Application pour changer son icone  :")
        set {name:Nmm, name extension:Ex} to info for POSIX file testdir

        do shell script "plutil -convert xml1 " & quoted form of (testdir & "Contents/Info.plist ") & " | cat " & quoted form of (testdir & "Contents/Info.plist") & " >" & quoted form of (testdir & "Contents/Infoo.plist")
        try
            do shell script "cp -f " & quoted form of icon_image_file_string & " " & quoted form of (testdir & "Contents/Resources/")
        end try
        try
            set icon_image_file to do shell script "/usr/libexec/PlistBuddy   " & quoted form of (testdir & "Contents/Info.plist") & " -c \"Set:CFBundleIconFile " & Nm & "\""
        end try
    end repeat
end open