【问题标题】:How to remove an application Icon from Dock from Mac OSX Mavericks?如何从 Mac OSX Mavericks 的 Dock 中删除应用程序图标?
【发布时间】:2013-11-23 23:23:18
【问题描述】:

我正在编写一个应用程序卸载程序,我想在其中从 Dock 中删除我们应用程序的图标。在安装期间,使用以下命令行将图标添加到停靠:

sudo -u "$USER" defaults write com.apple.dock persistent-apps -array-add "<dict><key>tile-data</key><dict><key>file-data</key><dict><key>_CFURLString</key><string>/Applications/MyApplication.app</string><key>_CFURLStringType</key><integer>0</integer></dict></dict></dict>"
sudo -u "$USER" osascript -e 'tell Application "Dock"' -e 'quit' -e 'end tell'

在卸载过程中,我使用以下 shell 脚本从 Dock 中删除图标:

#!/bin/sh
# Get location of entry for our application in Dock
dloc=$(defaults read com.apple.dock persistent-apps | grep file-label\" | awk '/MyApplication/ {print NR}')
dloc=$((dloc - 1))

# Remove this entry from Dock's plist file : com.apple.dock.plist
/usr/libexec/PlistBuddy -c "Delete persistent-apps:$dloc" ~/Library/Preferences/com.apple.dock.plist

# Restart Dock to persist changes
osascript -e 'delay 3' -e 'tell Application "Dock"' -e 'quit' -e 'end tell' -e 'delay 3'
#killall Dock

我可以看到上面的脚本成功地从 com.apple.dock.plist plist 的持久应用程序中删除了 MyApplication 的条目。但是重启 Dock 后,Dock 的图标还是和之前一样。

有人可以帮忙吗?

谢谢,

【问题讨论】:

    标签: macos icons osx-mavericks dock


    【解决方案1】:

    我和你有同样的问题。 删除项目两次将解决此问题。我成功了。

    #!/bin/sh -
    #delete item from com.apple.dock.plist
    dloc=$(defaults read com.apple.dock persistent-apps | grep file-label | awk '/Notes/  {printf NR}')
    dloc=$[$dloc-1]
    echo $dloc
    sudo -u $USER /usr/libexec/PlistBuddy -c "Delete persistent-apps:$dloc" ~/Library/Preferences/com.apple.dock.plist
    
    #must delete item from com.apple.dock.plist agian,or won't change
    dloc=$(defaults read com.apple.dock persistent-apps | grep file-label | awk '/Photo Booth/  {printf NR}')
    #dloc=$(defaults read com.apple.dock persistent-apps | grep _CFURLString "PageManager%209.31.app")
    dloc=$[$dloc-1]
    echo $dloc
    sudo -u $USER /usr/libexec/PlistBuddy -c "Delete persistent-apps:$dloc" ~/Library/Preferences/com.apple.dock.plist
    sleep 3
    # Restart Dock to persist changes
    osascript -e 'delay 3' -e 'tell Application "Dock"' -e 'quit' -e 'end tell'
    

    【讨论】:

      【解决方案2】:

      愚蠢的问题,可能是 ;-) ,但是您正在脚本的删除部分修改正确的用户 plist,不是吗。

      看起来它可能是从 /root/Library 中删除,而不是 /Users/username/Library....

      【讨论】:

        【解决方案3】:

        我制作了一个快速的 Python 脚本,您可以运行该脚本以根据此处给出的解决方案删除系统中所有用户的任何图标。它需要以 root 身份运行。

        https://github.com/jcarm010/osx-dock-remover

        【讨论】:

          【解决方案4】:

          我意识到这是一篇旧帖子,但我刚刚找到了另一个关于 PlistBuddy 的链接并想分享:Things set with PlistBuddy on Mavericks need a little extra push。虽然这提到了与 Finder 打交道的项目,但我在上面使用了您的脚本,并测试了从 Dock 中删除的单次迭代,然后用 killall 杀死 cfprefsd,然后杀死 Dock,图标就消失了。我将测试几次以确保,但我相信这对我有用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-08-28
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多