2012-01-03 16 views
5

mdworker (Spotlight) ilk taramasını tamamladığını nasıl belirlerim? Temel olarak küçük "" nin noktasını arıyorum. Spotlight arama simgesinden uzaklaşır ve aramalar gerçekleştirebilirsiniz. (Açıkçası, işletim sistemi, hazır olana kadar bir nokta gösterdiği için bunu belirlemenin bir yolu var ...) mdutil'dan hiçbir şey göremiyorum ve Spotlight API'larında hiçbir şey bulamıyorum.mdworker'ın (Spotlight) ilk taramayı tamamlayıp bitirmediğini belirleme

Şu anda senkronize olarak mdimport kullanarak kendi tarama zorluyorum ama bu (ı araştırmak durumunda oluyorum ne kadar agresif bağlı dakikadan saate kadar) uzun bir gecikmeye neden olur ve çiftleri mdworker zaten yaptığını çalışır.

Herhangi bir çözüm (programlı, kodlanmış, belgelenmiş veya belgesiz) burada adil bir oyun.

cevap

1

Bunun için Apple ile bir DTS açtım. Cevap, bunu 10.7'den itibaren destekleyecek bir yol olmamasıdır. Spotlight arama simgesinin kullandığı "küçük nokta", özel bir arayüzle kontrol edilir.

Amacım yüklü uygulamaların envanterini elde etmekti.

Şu anki çözümüm, fts numaralı telefonu kullanan tüm uygulamaların bir listesini ve ".app" adlı ürünleri arayarak ve budama sırasında budama yapmalarını sağladığından alt uygulamaları almadım. (Bu NSDirectoryEnumeration ile yapmak kolay olurdu, ama bu kod belirli parça Çekirdek Vakfı ile C++ içindedir. CFURLEnumerator ile yapmak kolay olurdu ama 10.4 desteklemesi gerekir. Yani fts gayet iyi.)

Tarama bu liste için çok hızlı. Kutudaki minimum uygulama sayısını bildiğimde, bunu system_profiler çıkışlarıyla karşılaştırıyorum. system_profiler,/Applications uygulamasında olduğunu bildiğimden daha az uygulama olduğunu söylerse, tüm paketleri kendim tararım. Aksi halde, çıkışı system_profiler'dan kullanırım.

Bu ideal değil, ama iyi bir sezgisel, "çoğunlukla" doğru ve uygulamaların aşırı düşük oranını engelliyor.

İlgili konular