Supprimer des services sur OS X


15

Je cherche à supprimer certains services complètement, ou du moins de la liste dans le volet de préférences Clavier. J'ai essayé:

  1. Épurateur de service . Il ne supprime que les services du menu - quelque chose que vous pouvez faire depuis les Préférences Système depuis 10.6.
  2. Suppression de fichiers dans ~/Library/Services/et /Library/Services/. C'est juste que la plupart des applications tierces n'y mettent pas leurs services.
  3. defaults delete /Applications/SomeApp.app/Contents/Info NSServices. Il supprime les services de la liste dans les Préférences Système. Mais cela invalide également la signature de code du bundle, et les modifications peuvent être annulées par des mises à jour.

Je suppose que vous auriez juste à vous contenter de la dernière option et à attribuer de nouvelles signatures au codesignbesoin. Mais existe-t-il un moyen plus simple?


Ah, la beauté d'OS X complique les choses qui devraient être simples.
cregox

Quelle version d'OS X utilisez-vous? Les composants internes d'OS X ont tendance à changer assez radicalement entre les versions principales.
Majenko

5
@Cawas: supprimer des services est simple: vous allez dans la liste des Préférences Système et les décochez. Ce que Lri veut faire, pour une raison quelconque, est de les supprimer et de les rendre impossibles à restaurer. Pourquoi devrait-il être facile de casser des trucs?
LaC

@LaC c'est probablement une question de goût dans ce cas. Dans mon cas, je voulais du bon vieux Expose. mais permettez-moi de renverser votre question: il est simple d'ajouter le service à cette liste - pourquoi ne devrait-il pas être simple de le supprimer complètement et de le garder propre si l' administrateur le souhaite?
cregox

AFAICT, c'est tout aussi simple. Vous ajoutez un service en le plaçant dans Library / Services ou en installant une application qui le fournit. Vous supprimez un service en le supprimant de Library / Services ou en supprimant l'application qui le fournit.
LaC

Réponses:


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

Tout type de certificat particulier à l'étape 2?
Daniel Beck
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.