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

问题描述 投票:0回答:2

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

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

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

如果解决方案是可编写脚本的,那就最好了,这样每次我们更新程序时,我们都可以轻松创建一个新的 pkg 文件。如果可以链接已经解释此过程的体面资源,那当然也会很好。这里的问题是:像 Pro - Xcode 开发者 ID 准备好的 pkg 那样制作 OS X 安装程序包不符合简单安装基本 cli 程序的需要。

macos installation pkgbuild
2个回答
1
投票

我会推荐套餐

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

0
投票

从脚本创建包的一种方法是使用内置

pkgbuild
命令。

  1. 创建一个
    Scripts
    目录,将脚本放入
    Scripts/postinstall
    ,并使文件可执行。
  2. 创建您的包:
    pkgbuild --nopayload --scripts Scripts --identifier com.yourorg.yourproduct --version 1.0 PkgbuildDemo.pkg 

另一种方法是使用 Packages 应用程序。

来源:将脚本变成 macOS 安装包的 2 种方法

© www.soinside.com 2019 - 2024. All rights reserved.