如何以编程方式卸载安装了 DriverKit 系统扩展的 App

How to programmatically uninstall App that install DriverKit system extension

我有一个应用在启动时会安装 DriverKit 系统扩展。

如果我随后将此应用从 /Applications 拖到 Bin 中,系统会提示我该应用还管理系统扩展,系统扩展也将被删除。

我想要一个可以删除应用程序的卸载程序。我尝试使用 rm -rf 删除卸载程序中的应用程序,但系统扩展没有被删除。

我也尝试了 trash 终端实用程序(可以与 brew install trash 一起安装)来检查是否可以从卸载程序中使用类似的东西,但没有成功。

有没有办法以编程方式删除应用程序以及应用程序安装的系统扩展。

好问题!我没有一个完全成熟的答案,但有足够的建议来尝试它们不适合评论,所以无论如何:

  • 尝试使用 Cocoa API 来“删除”文件。 。不过,我不知道这将如何处理系统扩展确认。
  • 如果您确实想要弹出确认对话框,使用 AppleScript 告诉 Finder 删除文件是一个很好的方法。我可以确认 solution given in this answer works 但它 显示确认对话框,这可能是也可能不是你想要的。
  • 您可以使用systemextensionsctl uninstall命令卸载系统扩展(包括dext)。不幸的是,这将始终弹出 身份验证 对话框,即使您 运行 它具有 root 权限。但取决于您在做什么,这可能比上面的更好。