3

因此,我正在为我们公司打包一个打印机工具,其中包含两个 .pkg 文件(驱动程序)和一个 .app 文件。

现在我正在使用以下命令来构建包:

pkgbuild --root ./content --script ./scripts --identifier com.MyGreatCompany --version 0.1 --install-location /tmp/ ./PrinterTool.pkg

因此,在安装软件包时,所有内容都放在 /tmp/ 目录中。然后安装后脚本完成安装,如下所示:

installer -verbose -pkg /private/tmp/PackageOne.pkg -target /
installer -verbose -pkg /private/tmp/PackageTwo.pkg -target /
/bin/rm -rf /Applications/Utilities/PrinterTool.app
/bin/mv -f /private/tmp/PrinterTool.app /Applications/Utilities/PrinterTool.app

这种作品。第一次安装尝试顺利,但是当我尝试重新安装相同的软件包时出现问题。.app 文件不会复制到 /tmp 文件夹,因此不会移动到 Utilities 文件夹。

所以我想知道两件事:

  1. 有没有解释为什么 .app 文件只复制一次?
  2. 这是打包多种文件类型的最佳方式吗?我觉得没有必要将它放在 /tmp 文件夹中。默认情况下,软件包文件被放置在某种安装程序 /tmp 文件夹中,对吗?这不能是 postinstall 脚本运行的工作目录吗?
4

1 回答 1

4

是的......你不想这样做:D

首先,你不需要创建子包,只是不要。您可以在同一个 pkg 文件中包含多个捆绑包。使用--components标志来定义它们(或创建组件属性列表)。在根目录中构建整个文件系统。因此,在您的情况下,您将拥有:

.../content/Applications/Utilities/PrinterTool.app
.../content/Library/...wherever.../driver-whatever.

那么你--install-location的就是/.

如果你真的需要多个包(或者如果它更方便),那么你想用productbuild它们来组合它们。您可以传递多个--package选项来创建多包安装程序。

于 2015-02-16T15:23:51.227 回答