web-dev-qa-db-ja.com

OSXでサービスを削除する

一部のサービスを完全に削除するか、少なくともキーボード設定ペインのリストから削除したいと考えています。私はもう試した:

  1. サービススクラバー 。メニューからサービスを削除するだけです。これは、10.6以降のシステム環境設定から実行できることです。
  2. ~/Library/Services/および/Library/Services/のファイルを削除します。ほとんどのサードパーティアプリがサービスを提供していないだけです。
  3. defaults delete /Applications/SomeApp.app/Contents/Info NSServices。システム環境設定のリストからサービスを削除します。ただし、バンドルのコード署名も無効になり、更新によって変更が元に戻される可能性があります。

最後のオプションを選択し、必要に応じてcodesignを使用して新しい署名を割り当てる必要があると思います。しかし、もっと簡単な方法はありますか?

15
Lri
#!/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
3
Lri