Dockutil works from self service, but not from policy deployment

admin8
New Contributor II

Hey folks, 

I have a weird one. We use dockutil to manage Dock. 

Dockutil installation + sorting out the Dock is set as a policy after enrollment. 

Policy deploys fine, installs Dockutil, adds the required icons but doesn't remove any of them with error 'Remove failed for xxx in /User/Username/Library/Preferences/com.apple.dock.plist'. Although, same script is added to our SelfService and when its run from there, it works as a charm. 

 

#!/bin/bash

echo "running dockutil"
DOCKUTIL=/usr/local/bin/dockutil

$DOCKUTIL --remove 'Safari' --allhomes
$DOCKUTIL --remove 'Mail' --allhomes
$DOCKUTIL --remove 'Contacts' --allhomes
$DOCKUTIL --remove 'Calendar' --allhomes
$DOCKUTIL --remove 'Photos' --allhomes
$DOCKUTIL --remove 'Messages' --allhomes
$DOCKUTIL --remove 'FaceTime' --allhomes
$DOCKUTIL --remove 'iTunes' --allhomes
$DOCKUTIL --remove 'iBooks' --allhomes
$DOCKUTIL --remove 'Maps' --allhomes
$DOCKUTIL --remove 'TV' --allhomes
$DOCKUTIL --remove 'Music' --allhomes
$DOCKUTIL --remove 'Podcasts' --allhomes
$DOCKUTIL --remove 'Freeform' --allhomes
$DOCKUTIL --remove 'App Store' --allhomes


apps=(
"/Applications/Slack.app"
"/Applications/1Password.app"
"/Applications/Quip.app"
"/Applications/Clockify Desktop.app"
"/Applications/Self Service.app"
"/Applications/Privileges.app"
)

for app in "${apps[@]}"; do
$DOCKUTIL --add "$app" --no-restart --allhomes
sleep 2
done

killall Dock

exit 0

 

 

Any idea what could be the problem here?

 

Thanks a lot. 

1 ACCEPTED SOLUTION

TrentO
Contributor II

I had a similar issue and fixed it by just using 

$DOCKUTIL --removal all --allhomes

and then adding back what I want, instead of trying to remove everything individually. I suspect it has to do with loading the dock for each removal, so you could also try adding --no-restart to the removals as you have done with the adds. 

View solution in original post

3 REPLIES 3

AJPinto
Honored Contributor III

If I’m not mistaken when it’s run from SS JAMF is running the script as the user or targeting the user. As far as running it on a device with a logged in user try adding a function to identify the current logged in user. Keep in mind it will fail if no user is logged on as there is no dock to target

TrentO
Contributor II

I had a similar issue and fixed it by just using 

$DOCKUTIL --removal all --allhomes

and then adding back what I want, instead of trying to remove everything individually. I suspect it has to do with loading the dock for each removal, so you could also try adding --no-restart to the removals as you have done with the adds. 

admin8
New Contributor II

Thank you @TrentO!
Adding --no-restart to each line has resolved the issue.