Remover serviços no OS X

15

Estou procurando remover alguns serviços completamente, ou pelo menos da lista no painel de preferências Teclado. Eu tentei:

  1. Purificador de serviço . Ele remove apenas os serviços do menu - algo que você pode fazer nas Preferências do Sistema desde a 10.6.
  2. Removendo arquivos em ~/Library/Services/e /Library/Services/. É que a maioria dos aplicativos de terceiros não coloca seus serviços lá.
  3. defaults delete /Applications/SomeApp.app/Contents/Info NSServices. Ele remove os serviços da lista em Preferências do Sistema. Mas também invalida a assinatura de código do pacote e as alterações podem ser revertidas por atualizações.

Eu acho que você teria que se contentar com a última opção e atribuir novas assinaturas codesignquando necessário. Mas existe alguma maneira mais fácil?

Lri
fonte
Ah, a beleza do OS X complicando as coisas que deveriam ser simples.
Cregox # 25/11
Qual versão do OS X você está executando? Os componentes internos do OS X tendem a mudar bastante drasticamente entre as principais versões.
Majenko 27/03
5
@Cawas: remover serviços é simples: você acessa a lista em Preferências do Sistema e desmarca-os. O que Lri quer fazer, por algum motivo, é removê-los e torná-los impossíveis de restaurar. Por que seria fácil quebrar coisas?
LaC 28/03
@LaC é provavelmente uma questão de gosto neste caso. No meu caso, eu queria o bom e velho Expose. mas deixe-me reverter sua pergunta: é simples adicionar o serviço a essa lista - por que não seria simples removê-lo completamente e mantê-lo limpo, se o administrador desejar?
cregox
AFAICT, é tão simples. Você adiciona um serviço colocando-o na Biblioteca / Serviços ou instalando um aplicativo que o fornece. Você remove um serviço removendo-o da Biblioteca / Serviços ou removendo o aplicativo que o fornece.
LaC 28/03

Respostas:

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
fonte
Algum tipo de certificado específico na etapa 2?
Daniel Beck