将PackageMaker命令行构建安装程序移植到pkgbuild

Bre*_*lle 14 macos installer packagemaker pkgbuild

我一直在尝试将Mac PackageMaker命令行构建移植到pkgbuild和productbuild但是我被卡住了.遗憾的是,除了这个StackOverflow帖子以及pkgbuildproductbuild手册页之外,我还没有找到任何记录这些新程序如何工作的内容.

这是我的问题.我创建了一个根安装目录,其中包含以下文件:

/some_path/Applications
                       /MyProgram.app
          /Library
                  /Frameworks
                             /MyFramework.framework
                                                   /[library files...]
Run Code Online (Sandbox Code Playgroud)

下面的命令行调用对PackageMaker非常有用.它创建了一个安装程序,安装了上面的所有文件.

$ /Developer/usr/bin/packagemaker \
    --title "My Program" \
    --root /some_path \
    --version 1.0.0 \
    --filter "\.DS_Store" \
    --resources ./resources/ \
    --scripts ./scripts/ \
    --root-volume-only \
    --domain system \
    --verbose \
    --no-relocate \
    --target 10.5 \
    --id com.my_company.pkg \
    --out MyProgram.pkg
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试用pkgbuild编写这个并遇到一个重大问题.我使用以下电话:

$ pkgbuild \
    --root /some_path \
    --version 1.0.0 \
    --install-location "/" \
    --scripts "./scripts/" \
    --identifier "com.my_company.pkg" \
    MyProgram.pkg
Run Code Online (Sandbox Code Playgroud)

此命令构建一个安装程序,将MyProgram.framework目录复制到/ Library/Frameworks中.但是,它不会将MyProgram.app文件安装到/ Applications目录中.当我查看安装程序日志时,我看到以下消息:

Applications/MyProgram.app重定位到/some_path/Applications/MyProgram.app

任何人都可以解释为什么这不是像PackageMaker那样将MyProgram.app文件添加到/ Applications目录中?

Bre*_*lle 4

不幸的是,这个问题的答案并不正是我想要的。我不知道如何从流程中消除 PackageMaker。然而,有一个解决方案,其中包括 pkgutil 和 PackageMaker,可以完全在命令行上创建带有自定义欢迎消息、许可证和背景图像的安装程序。不需要PackageMaker GUI 。步骤如下:

  1. 在特殊目录结构上运行packagemaker 命令行可执行文件。此目录结构反映了 Mac 文件系统。请阅读古老但可靠的“PackageMaker How-to”教程来了解更多信息。
  2. 运行 pkgutil ( pkgutil --expand) 以提取包内容
  3. 查看内容并确定您要更改的内容。一些选项包括欢迎消息、许可证和背景图像。
  4. 添加命令以通过命令行更改这些文件。查看“自动化 Apple 的 PackageMaker”教程以获取更多信息。最简单的方法就是运行这样的东西echo '<background file="your_background.png">'
  5. 运行 pkgutil ( pkgutil --flatten) 来重建包。