确定mdworker(Spotlight)是否已完成第一次扫描

时间:2012-01-03 20:26:13

标签: macos spotlight

如何确定mdworker(Spotlight)已完成第一次扫描?我基本上是在找点“。”的点。在聚光灯下搜索图标会消失,你就可以进行搜索了。 (显然操作系统有办法确定这一点,因为它显示一个点,直到它准备就绪......)我没有看到mdutil的任何内容,我在Spotlight API中找不到任何内容。

我目前正在使用mdimport同步强制进行自己的扫描,但这会引入很长的延迟(从几分钟到几小时,具体取决于我在搜索的位置有多么激进)并重复{{1已经在做了。

任何解决方案(程序化,脚本化,文档化或未记录的)都是公平的游戏。

1 个答案:

答案 0 :(得分:1)

我为Apple开了一个DTS。答案是,从10.7开始,没有支持的方法。聚光灯搜索图标使用的“小点”由私人界面控制。

我的目标是获取已安装应用程序的清单。

我的解决方案目前是使用fts收集/ Applications中的所有应用程序列表,并搜索名为“.app”的内容,并在我去的时候进行修剪,这样我就不会得到子应用程序。 (这对NSDirectoryEnumeration更容易,但是这段特殊的代码在C ++中使用Core Foundation。使用CFURLEnumerator会更容易,但我需要支持10.4。所以{{ 1}}很好。)

扫描此列表非常快。一旦我知道盒子上的最小应用程序数量,我就会将其与fts输出进行比较。如果system_profiler告诉我应用程序中的应用程序数量少于我所知的应用程序,那么我会自己扫描所有数据包。否则,我使用system_profiler的输出。

这不是理想的,但它是一个不错的启发式,“大多数”是正确的,并且可以防止大量的应用程序漏报。