我有一个程序(由一位同事创建,从Linux移植,但在Mac上成功编译),我需要将其部署到许多Mac工作站。目前,我们通过推出pkg文件(而不是我们创建的)来实现这一点。
我的一般问题(其他人可能会找到有用的答案)是,如何将命令行程序/脚本打包到安装该程序的pkg文件中?打包.app文件的常用方法似乎已经有了很好的文档,但关于获取任意程序并将其封装在pkg安装程序中的细节却很少。
pkgbuild(etc)的手册页做了很多假设-你已经用xcode构建了一个应用程序,你打算使用.app并可以生成plist,等等。我们想做的就是让mac服务器安装一个非应用程序,它想使用pkgs。
最好是该解决方案可以编写脚本,以便每次更新程序时都可以轻松地创建一个新的pkg文件。如果一个已经解释了这个过程的不错的资源可以联系起来,那当然也会很好。这里的问题是:像Pro-Xcode Developer ID那样制作OSX安装程序包与简单安装基本cli程序的需求不匹配。
我推荐Packages。
它是可编写脚本的,因此它可以成为构建过程的一部分,并为您生成一个不错的mpkg。
我们正在使用它来自动下载第三方库,然后调用make进行编译,以及安装编译后的文件。
需要注意的是,尽管这会生成一个mpkg,但大多数分发都是用磁盘映像完成的,所以我们也使用hdiutil创建一个稀疏映像,将mpkg复制到其中,将其转换为压缩的只读dmg,然后分发它。
这个程序的一个例子是:
1) 创建稀疏RW DMG文件。
hdiutil create -size 100M -type SPARSE -volname "MyInstaller" -fs HFS+ MyInstaller.dmg.sparseimage
2) 附加到图像。注意输出中的磁盘和已装入的卷名(例如/dev/disk2s1和/Volumes/MyInstaller)
hdiutil attach MyInstaller.dmg.sparseimage
3) 复制到mpkg安装程序
cp -R Packages/build/My_Packages.mpkg /Volumes/MyInstaller/
4) 从图像中提取。
hdiutil detach -force {mounted disk} (ex. hdiutil detach -force /dev/disk2s1)
5) 从可写稀疏图像创建压缩只读图像。
hdiutil convert "MyInstaller.dmg.sparseimage" -format UDZO -o "MyInstaller.dmg" -ov -imagekey zlib-level=9