繁体   English   中英

在Mac OS X pkg中打包命令行脚本

[英]Package a command line script in a Mac OS X pkg

我有一个程序(由同事创建,从Linux移植但在Mac上成功编译)我需要部署到许多Mac工作站。 目前我们通过推出pkg文件(不是我们创建的文件)来实现。

我的一般问题(其他人可能会找到有用的答案)是如何将命令行程序/脚本打包到安装程序的pkg文件中? 包装.app文件的常用方法似乎记录得很好,但是关于采用任意程序并将其包装在pkg安装程序中的细节很少。

pkgbuild(等)的手册页做了很多假设 - 你已经用xcode构建了一个应用程序,你打算使用.app并且可以生成plist等。我们要做的就是让mac server安装一个非app程序,它想要使用pkgs。

如果解决方案是可编写脚本的,那么每次我们更新程序时都可以轻松创建新的pkg文件。 如果已经解释过这个过程的体面资源可以联系起来当然也会很有效。 这里的问题: 使OS X安装程序包像Pro-Xcode Developer ID ready pkg与简单安装基本cli程序的需要不匹配。

我会推荐套餐

它是可编写脚本的,因此它可以成为构建过程的一部分,并为您生成一个很好的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM