我了解PackageMaker现已弃用。我们现在应该使用pkgbuild / productbuild。
但是,我似乎无法找到为kext创建安装程序的示例。我希望在我的kext Xcode项目中构建包作为构建步骤的一部分。所以任何bash / script文件都会很棒。
答案 0 :(得分:4)
This answer是一个非常好的指南。
对于特定的kext,在产品之后 - >归档步骤,为了生成组件plist,我发现我需要'cd'进入内置的归档包目录:
cd ~/Library/Developer/Xcode/Archives/2013-12-22/my-kext\ 22-12-2013\ 22.57.xcarchive
然后,pkgbuild --analyze
步骤如下所示:
pkgbuild --analyze --root ./Products/ my-kext.plist
生成的plist应包含RootRelativeBundlePath
键下kext的合理安装目的地。 (通常为/System/Library/Extensions/my.kext
,或者如果已经过编码,则为10.9+,应为/Library/Extensions/my.kext
)如果没有,请在Xcode中修复kext目标的安装位置。
安装kexts时要注意的主要事项是获得权限并刷新kext缓存。 pkgbuild似乎默认以root身份安装kext,所以这很好。要强制刷新kext缓存,您需要更新/System/Library/Extensions
上的修改时间(或/Library/Extensions
,如果您要安装的位置)。你想在完全安装你的kext之后这样做,所以你需要一个postinstall脚本。为它创建一个目录,例如./scripts并创建一个名为'postinstall'的文件,内容为:
#!/bin/sh
touch /System/Library/Extensions
然后使其可执行:
chmod +x postinstall
您现在可以使用以下方法为您的kext构建一个通用包:
pkgbuild --root ./Products/ --scripts ./scripts/ --component-plist my-kext.plist my-kext.pkg
对于自定义,代码签名等,请按照catlan链接答案中的说明进行操作 - 您无法击败它们!