Usuń usługi w systemie OS X

15

Chcę całkowicie usunąć niektóre usługi lub przynajmniej z listy w panelu preferencji Klawiatura. Próbowałem:

  1. Płuczka serwisowa . Usuwa tylko usługi z menu - coś, co można zrobić w Preferencjach systemowych od 10.6.
  2. Usuwanie plików w ~/Library/Services/i /Library/Services/. Po prostu większość aplikacji innych firm nie umieszcza tam swoich usług.
  3. defaults delete /Applications/SomeApp.app/Contents/Info NSServices. Usuwa usługi z listy w Preferencjach systemowych. Ale unieważnia również podpis kodu pakietu, a zmiany mogą zostać cofnięte przez aktualizacje.

Sądzę, że musiałbyś zadowolić się ostatnią opcją i przypisać nowe podpisy w codesignrazie potrzeby. Ale czy jest jakiś łatwiejszy sposób?

Lri
źródło
Ach, piękno OS X komplikuje rzeczy, które powinny być proste.
cregox
Z której wersji OS X korzystasz? Elementy wewnętrzne OS X zmieniają się dość drastycznie między głównymi wersjami.
Majenko
5
@Cawas: usuwanie usług jest proste: idź do listy w Preferencjach systemowych i odznacz je. Z jakiegoś powodu Lri chce je usunąć i uniemożliwić ich przywrócenie. Dlaczego łatwo jest zepsuć rzeczy?
LaC
@LaC w tym przypadku to prawdopodobnie kwestia gustu. W moim przypadku chciałem starego, dobrego Expose. ale pozwól, że odwrócę twoje pytanie: dodanie usługi do tej listy jest proste - dlaczego nie powinno być łatwo całkowicie ją usunąć i utrzymać w czystości, jeśli administrator sobie tego życzy?
cregox
AFAICT, to jest tak samo proste. Dodajesz usługę, umieszczając ją w bibliotece / usługach lub instalując aplikację, która ją zapewnia. Usuwasz usługę, usuwając ją z biblioteki / usług lub usuwając aplikację, która ją zapewnia.
LaC

Odpowiedzi:

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
źródło
Dowolny konkretny typ certyfikatu w kroku 2?
Daniel Beck