macOS 上的扩展、PluginKit 和疯狂

Vic*_*nin 7 macos plugins

我们的 macOS 应用程序有一个扩展。

一旦带有扩展的应用程序第一次启动,PluginKit 就会注册它,当它被删除时,插件就会被取消注册。

PluginKit 也有一些算法如何选择加载哪个插件(我假设它只是最新版本)。

但是,我偶然发现了很多问题:

  • 我从 XCode 运行应用程序,但由于某种原因插件未注册
  • 我删除了一个应用程序并且 PluginKit 没有删除注册
  • 我看到一个测试版用户的注册神奇地消失了

我很困惑。整个插件的行为非常不可靠。

我找到了一种排除故障和修复它的方法:

pluginkit -v -m -D -i <bundleid>
pluginkit -a <path>
pluginkit -r <path>
Run Code Online (Sandbox Code Playgroud)

你看到这样的问题吗?你如何处理这些问题?你有一些代码(以编程方式尝试清理 pluginkit DB?)