在OS X上删除服务


15

我希望完全删除某些服务,或者至少从“键盘”首选项窗格中的列表中删除。我试过了:

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

我想您只需要解决最后一个选项,并codesign在需要时分配新的签名即可。但是,有没有更简单的方法?


嗯,OS X的美丽使应该简单的事情变得复杂。
cregox 2011年

您正在运行哪个版本的OS X?在主要版本之间,OS X的内部确实会发生很大的变化。
Majenko 2011年

5
@Cawas:删除服务很简单:转到“系统偏好设置”中的列表,然后取消选中它们。出于某种原因,Lri想要做的是删除它们并使它们无法恢复。为什么要轻松打破东西?
LaC 2011年

@LaC在这种情况下可能只是一个口味问题。就我而言,我想要好的旧的Expose。但是,让我扭转您的问题:将服务添加到该列表很简单-如果管理员愿意,为什么不简单地将其完全删除并保持干净呢?
cregox

AFAICT,就是这么简单。您可以通过将服务放入“库/服务”中或安装提供该服务的应用程序来添加该服务。您可以通过从“库/服务”中删除服务或删除提供服务的应用程序来删除服务。
LaC 2011年

Answers:


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

步骤2中是否有特定的证书类型
丹尼尔·贝克
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.