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

问题描述

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

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

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

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

是否可以通过编程方式删除应用以及该应用安装的系统扩展程序。

解决方法

好问题!我没有一个完整的答案,但是有足够的建议尝试不适合评论,因此无论如何这里都是这样:

  • 尝试使用Cocoa API来“删除”文件。 This answer gives a good rundown。我不知道这将如何应对系统扩展确认。
  • 如果确实要想要弹出确认对话框,则使用AppleScript告诉Finder删除文件是一种很好的方法。我可以确认solution given in this answer works,但它将会显示确认对话框,它可能是您想要的,也可能不是。
  • 您可以使用systemextensionsctl uninstall命令来卸载系统扩展(包括dext)。不幸的是,即使您使用root特权运行它,也始终会弹出一个 authentication 对话框。但是根据您的工作,可能比上面更合适。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...