【问题标题】:Package different file types with pkgbuild使用 pkgbuild 打包不同的文件类型
【发布时间】:2015-02-16 15:09:32
【问题描述】:

所以我为我们公司打包了一个打印机工具,包含两个 .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 文件夹中,对吧?这不能是安装后脚本运行的工作目录吗?

【问题讨论】:

    标签: macos bash .app pkgbuild


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 好的,我明白了。它的工作方式与 packagemaker 的工作方式相同,只需指定整个路径。关于子包,这些不是我创建的。这些是随打印机提供的驱动程序包。这些需要与打印机工具一起安装。所以我唯一的选择就是使用productbuild。对于我可以通过 --package 选项的包,我应该使用哪个选项来放置文件?
    • --component 或--content,取决于你在做什么。如果它开始变得复杂,您可能需要创建一个分发 plist。您可以使用 --synthesize 选项为您编写一个基本的分发 plist(基本上为您保存所有其他选项)
    猜你喜欢
    • 2021-06-06
    • 1970-01-01
    • 1970-01-01
    • 2018-11-03
    • 2019-05-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多