Удалить службы в OS X

15

Я хочу полностью удалить некоторые службы или, по крайней мере, из списка на панели настроек клавиатуры. Я пробовал:

  1. Сервисный скруббер . Он удаляет только сервисы из меню - то, что вы можете делать из системных настроек с 10.6.
  2. Удаление файлов в ~/Library/Services/и /Library/Services/. Просто большинство сторонних приложений не размещают там свои сервисы.
  3. defaults delete /Applications/SomeApp.app/Contents/Info NSServices, Он действительно удаляет службы из списка в Системных настройках. Но это также делает недействительной подпись кода пакета, и изменения могут быть отменены обновлениями.

Я полагаю, вам просто нужно согласиться с последним вариантом и назначить новые подписи codesignпри необходимости. Но есть ли более простой способ?

LRI
источник
Ах, красота OS X усложняет вещи, которые должны быть простыми.
Cregox
Какую версию OS X вы используете? Внутренние компоненты OS X имеют тенденцию довольно резко меняться между основными версиями.
Majenko
5
@Cawas: удалить сервисы просто: вы переходите к списку в Системных настройках и снимаете галочку с них. По какой-то причине Лри хочет удалить их и сделать невозможным их восстановление. Почему должно быть легко сломать вещи?
LaC
@LaC это, наверное, дело вкуса в этом случае. В моем случае я хотел старый добрый Expose. но позвольте мне перевернуть ваш вопрос: просто добавить службу в этот список - почему не должно быть просто удалить ее полностью и содержать в чистоте, если администратор этого пожелает?
Cregox
AFAICT, это так же просто. Вы добавляете услугу, помещая ее в библиотеку / службы или устанавливая приложение, которое ее предоставляет. Вы удаляете службу, удаляя ее из библиотеки / служб или удаляя приложение, которое ее предоставляет.
LaC

Ответы:

3
#!/bin/sh

applist="Path Finder
Skim
TextWrangler"
IFS=$'\n'

for appname in $applist; do
    apppath=$(mdfind -onlyin /Applications/ -onlyin ~/Applications/ \
    -onlyin /Developer/Applications/ -onlyin /System/Library/CoreServices/ \
    'kMDItemKind == Application' | grep -i "/$appname.app$" | head -1)
    echo $apppath
    date=$(date '+%y%m%d%-H%M%S')
    cp "$apppath/Contents/Info.plist" "$apppath/Contents/Info-$date.plist"
    defaults delete "$apppath/Contents/Info" NSServices
    codesign -f -s - "$apppath"
done
LRI
источник
Какой-либо конкретный тип сертификата на шаге 2?
Даниэль Бек