是否可以在应用程序中捆绑kext?

时间:2012-10-16 14:33:03

标签: java macos installer kernel-extension

我有一个需要kext的Mac OS X应用程序(也是我自己构建的)。我想将kext“捆绑”到应用程序中,这样当用户运行应用程序时,会自动加载kext(当然,可能会显示管理员密码的提示)。是否可以,或者我是否需要在安装时安装kext?

2 个答案:

答案 0 :(得分:1)

您可以从应用中安装它。您需要使用服务管理框架以提升的权限运行任务(用C或Obj-C编写)。然后可以安装kext。

您的帮助工具应该是一个以提升权限运行的可执行文件,以执行代表您的应用安装kext的操作。

步骤:

  1. 在您的应用包中包含Kext和帮助工具作为资源
  2. 创建一个帮助工具来为您完成工作。您的帮助工具需要将您的kext复制到/ System / Extensions目录。您需要以提升的权限复制它。获取帮助工具来调用kextload来安装它。
  3. 您需要对帮助工具和应用程序进行代码签名,并将辅助工具和主应用程序的服务管理框架的相关条目放在info.plist中。
  4. Apple开发人员的文档绝对是残酷的。祝好运。您可能必须在Objective-C或C中完成所有操作,而不是Java,因为您必须使用安全框架和服务管理器等C库以及代码签名。

答案 1 :(得分:0)

我成功捆绑了它!我运行一个脚本,询问root密码,然后继续安装kext。唯一的问题是捆绑的kext的位置必须事先知道(我必须'cd'到它们);因此,应用程序必须放在预定义的位置,否则将无法正常工作。