使用 pkgbuild 打包不同的文件类型
Package different file types with pkgbuild
所以我正在为我们公司打包一个打印机工具,其中包含两个 .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 文件夹。
所以我想知道两件事:
- 是否解释为什么 .app 文件只复制一次?
- 这是打包多种文件类型的最佳方式吗?我觉得把它放在 /tmp 文件夹中是不必要的。默认情况下,包文件被放置在某种安装程序 /tmp 文件夹中,对吗?这不能是安装后脚本将从中运行的工作目录 运行?
是的...你不想这样做 :D
首先,您不需要创建子包,只要不创建即可。您可以在同一个 pkg 文件中包含多个包。使用 --components
标志来定义它们(或创建组件 属性 列表)。在 rootdir 中构建整个文件系统。所以在你的情况下你有:
.../content/Applications/Utilities/PrinterTool.app
.../content/Library/...wherever.../driver-whatever.
那么你的 --install-location
就是 /
.
如果你真的需要多个包(或者如果它只是更方便),那么你想使用 productbuild
来组合它们。您可以传递多个 --package
选项来创建多包安装程序。
所以我正在为我们公司打包一个打印机工具,其中包含两个 .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 文件夹。
所以我想知道两件事:
- 是否解释为什么 .app 文件只复制一次?
- 这是打包多种文件类型的最佳方式吗?我觉得把它放在 /tmp 文件夹中是不必要的。默认情况下,包文件被放置在某种安装程序 /tmp 文件夹中,对吗?这不能是安装后脚本将从中运行的工作目录 运行?
是的...你不想这样做 :D
首先,您不需要创建子包,只要不创建即可。您可以在同一个 pkg 文件中包含多个包。使用 --components
标志来定义它们(或创建组件 属性 列表)。在 rootdir 中构建整个文件系统。所以在你的情况下你有:
.../content/Applications/Utilities/PrinterTool.app
.../content/Library/...wherever.../driver-whatever.
那么你的 --install-location
就是 /
.
如果你真的需要多个包(或者如果它只是更方便),那么你想使用 productbuild
来组合它们。您可以传递多个 --package
选项来创建多包安装程序。