在 OS X 上删除服务

在 OS X 上删除服务

我希望彻底删除某些服务,或者至少从“键盘”偏好设置窗格的列表中删除它们。我尝试过:

  1. 服务洗涤器。它仅从菜单中删除服务 — 自 10.6 以来,您便可以从系统偏好设置中执行此操作。
  2. 删除~/Library/Services/和中的文件/Library/Services/。只是大多数第三方应用程序不会将其服务放在那里。
  3. defaults delete /Applications/SomeApp.app/Contents/Info NSServices。它确实会从“系统偏好设置”列表中删除服务。但它也会使软件包的代码签名无效,并且更改可以通过更新恢复。

我想你只能选择最后一个选项,并在codesign需要时分配新签名。但是有没有更简单的方法呢?

答案1

#!/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

相关内容