2012-01-03 15 views
5

Jak ustalić, czy mdworker (Reflektor punktowy) zakończył pierwszy skan? Po prostu szukam punktu, w którym małe "." w ikonce wyszukiwania spotlight znikną i będziesz mógł wykonywać wyszukiwania. (Oczywiście system operacyjny ma sposób na określenie tego, ponieważ wyświetla kropkę, dopóki nie będzie gotowy ...) Nie widzę niczego od mdutil i nie mogę znaleźć niczego w interfejsach API Spotlight.Określanie, czy narzędzie mdworker (Spotlight) zakończyło pierwszy skan

Jestem obecnie zmuszając własne skanowanie przy użyciu mdimport synchronicznie, ale to wprowadza duże opóźnienie (od minut do kilku godzin w zależności od tego, jak agresywne mam być o tym, gdzie szukać) i duplikaty pracować że mdworker już robi.

Jakiekolwiek rozwiązanie (programowe, skryptowe, udokumentowane lub nieudokumentowane) to gra fair.

Odpowiedz

1

Otworzyłem DTS dla tego z Apple. Odpowiedź brzmi, że nie ma obsługiwanego sposobu, aby to zrobić od 10.7. "Mała kropka", której używa ikona wyszukiwania reflektorów, jest sterowana za pomocą prywatnego interfejsu.

Moim celem było zdobycie spisu zainstalowanych aplikacji.

Moje rozwiązanie polega obecnie na zebraniu listy wszystkich aplikacji w/Applications przy użyciu fts i wyszukaniu rzeczy o nazwie ".app", a następnie przycinaniu, więc nie otrzymuję aplikacji podrzędnych. (Byłoby to łatwiejsze do zrobienia z NSDirectoryEnumeration, ale ten konkretny kawałek kodu w C++ z Fundacją podstawowej. Byłoby łatwiej zrobić z CFURLEnumerator, ale muszę wspierać 10.4. Więc fts jest w porządku).

Skanowanie dla tej listy jest bardzo szybki. Kiedy poznam minimalną liczbę aplikacji na pudełku, porównuję to z wyjściami system_profiler. Jeśli system_profiler mówi mi, że jest mniej aplikacji niż wiem w/Applications, to skanuję wszystkie pakiety samodzielnie. W przeciwnym razie używam wyjścia z system_profiler.

To nie jest idealne, ale jest przyzwoitym heurystycznym, ma "w większości" rację i zapobiega drastycznemu zaniżaniu liczby zgłoszeń.

Powiązane problemy