Hapus layanan pada OS X

15

Saya ingin menghapus beberapa layanan sepenuhnya, atau setidaknya dari daftar di panel preferensi Keyboard. Saya sudah mencoba:

  1. Scrubber Layanan . Ini hanya menghapus layanan dari menu - sesuatu yang dapat Anda lakukan dari System Preferences sejak 10.6.
  2. Menghapus file dalam ~/Library/Services/dan /Library/Services/. Hanya saja sebagian besar aplikasi pihak ketiga tidak menempatkan layanan mereka di sana.
  3. defaults delete /Applications/SomeApp.app/Contents/Info NSServices. Itu menghapus layanan dari daftar di System Preferences. Tapi itu juga membatalkan tanda tangan kode bundel, dan perubahan bisa dikembalikan oleh pembaruan.

Saya kira Anda hanya harus puas dengan opsi terakhir, dan menetapkan tanda tangan baru codesignketika diperlukan. Tetapi apakah ada cara yang lebih mudah?

Lri
sumber
Ah, keindahan OS X menyulitkan hal-hal yang seharusnya sederhana.
cregox
Versi OS X mana yang Anda jalankan? Internal OS X cenderung berubah cukup drastis antara versi utama.
Majenko
5
@ Cawas: menghapus layanan sederhana: Anda masuk ke daftar di System Preferences dan hapus centangnya. Apa yang ingin dilakukan Lri, karena alasan tertentu, adalah menghapusnya dan membuatnya tidak mungkin untuk dipulihkan. Mengapa mudah memecahkan barang?
LaC
@ LaC itu mungkin masalah selera dalam hal ini. Dalam kasus saya, saya ingin Paparan tua yang baik. tapi izinkan saya membalikkan pertanyaan Anda: mudah untuk menambahkan layanan ke daftar itu - mengapa tidak mudah untuk menghapusnya sepenuhnya dan tetap bersih jika admin menginginkannya?
cregox
AFAICT, sesederhana itu. Anda menambahkan layanan dengan memasukkannya ke Perpustakaan / Layanan atau menginstal aplikasi yang menyediakannya. Anda menghapus layanan dengan menghapusnya dari Perpustakaan / Layanan atau menghapus aplikasi yang menyediakannya.
LaC

Jawaban:

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
sumber
Adakah Jenis Sertifikat tertentu dalam langkah 2?
Daniel Beck