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

标签 macos spotlight

我如何确定 mdworker (Spotlight) 已完成第一次扫描?我基本上是在寻找小“。”的点。在聚光灯下的搜索图标将消失,您将能够执行搜索。 (显然操作系统有办法确定这一点,因为它会显示一个点,直到它准备好......)我没有看到来自 mdutil 的任何内容我在 Spotlight API 中找不到任何东西。

我目前正在使用 mdimport 强制我自己同步扫描, 但这会导致很长的延迟(从几分钟到几小时,具体取决于我在哪里搜索的积极程度)并重复 mdworker 的工作已经在做。

任何解决方案(程序化、脚本化、文档化或无文档化)在这里都是公平的。

最佳答案

我为此与 Apple 开了一个 DTS。答案是从 10.7 开始没有支持的方法来执行此操作。聚光灯搜索图标使用的“小点”由私有(private)界面控制。

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

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

扫描此列表非常快。一旦我知道盒子上的最小应用程序数量,我会将其与 system_profiler 进行比较。输出。如果 system_profiler告诉我/Applications 中的应用程序比我知道的要少,然后我自己扫描所有捆绑包。否则,我使用 system_profiler 的输出.

这并不理想,但它是一种不错的启发式方法,“大部分”是正确的,并且可以防止应用程序的严重漏报。

关于macos - 确定 mdworker (Spotlight) 是否已完成第一次扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8718155/

相关文章:

macos - Mac OS X 上 NSAttributedString initWithRTF 没有可见接口(interface)

ios - 应用程序使用 writeToFile 在 iPhone 上保存的数据是否可以包含在 Spotlight 搜索的结果中?

macos - mdls命令: issue with "kMDItemTotalBitRate" attribute values

macos - mdfind 缺少结果

c++ - 在 C++ 项目中静态链接 MySQL (Mac OS X, g++, Eclipse)

c++ - 如何在 qt gui 应用程序中使用动态库?

swift - 在 MacOS 上使用 VLCKit 本地录制流 - 寻找示例

macos - Spotify + AppleScript : Add current track to playlist

objective-c - 从代码在 Mac OS X 上设置给定文件扩展名的默认应用程序

python - 通过 _kMDItemUserTags 或 kMDItemOMUserTags 在 xattr 中使用多个关键字