如何确定mdworker
(Spotlight)已完成第一次扫描?我基本上是在找点“。”的点。在聚光灯下搜索图标会消失,你就可以进行搜索了。 (显然操作系统有办法确定这一点,因为它显示一个点,直到它准备就绪......)我没有看到mdutil
的任何内容,我在Spotlight API中找不到任何内容。
我目前正在使用mdimport
同步强制进行自己的扫描,但这会引入很长的延迟(从几分钟到几小时,具体取决于我在搜索的位置有多么激进)并重复{{1已经在做了。
任何解决方案(程序化,脚本化,文档化或未记录的)都是公平的游戏。
答案 0 :(得分:1)
我为Apple开了一个DTS。答案是,从10.7开始,没有支持的方法。聚光灯搜索图标使用的“小点”由私人界面控制。
我的目标是获取已安装应用程序的清单。
我的解决方案目前是使用fts
收集/ Applications中的所有应用程序列表,并搜索名为“.app”的内容,并在我去的时候进行修剪,这样我就不会得到子应用程序。 (这对NSDirectoryEnumeration
更容易,但是这段特殊的代码在C ++中使用Core Foundation。使用CFURLEnumerator
会更容易,但我需要支持10.4。所以{{ 1}}很好。)
扫描此列表非常快。一旦我知道盒子上的最小应用程序数量,我就会将其与fts
输出进行比较。如果system_profiler
告诉我应用程序中的应用程序数量少于我所知的应用程序,那么我会自己扫描所有数据包。否则,我使用system_profiler
的输出。
这不是理想的,但它是一个不错的启发式,“大多数”是正确的,并且可以防止大量的应用程序漏报。