Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macos 如何从Mac OSX Mavericks的Dock中删除应用程序图标?_Macos_Icons_Osx Mavericks_Dock - Fatal编程技术网

Macos 如何从Mac OSX Mavericks的Dock中删除应用程序图标?

Macos 如何从Mac OSX Mavericks的Dock中删除应用程序图标?,macos,icons,osx-mavericks,dock,Macos,Icons,Osx Mavericks,Dock,我正在编写一个应用程序卸载程序,我想从Dock中删除我们应用程序的图标。在安装过程中,使用以下命令行将图标添加到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>_CF

我正在编写一个应用程序卸载程序,我想从Dock中删除我们应用程序的图标。在安装过程中,使用以下命令行将图标添加到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'
我可以看到,上面的脚本成功地从com.apple.dock.plist-plist持久化应用程序中删除了MyApplication条目。但是,重新启动Dock后,Dock仍具有与前一个相同的图标

有人能帮忙吗


谢谢,

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


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

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

#!/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'

我意识到这是一篇老帖子,但我刚刚找到了另一个关于PlistBuddy的链接,我想与大家分享:。虽然这里提到了处理Finder的项目,但我在上面使用了您的脚本,测试了从dock中删除的单个迭代,然后用killall杀死了cfprefsd,然后杀死了dock,图标消失了。我将进行几次测试以确保,但我相信这对我来说已经足够了。

我制作了一个快速python脚本,您可以根据这里给出的解决方案运行该脚本来删除系统中所有用户的任何图标。它需要作为根运行

#!/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'