我一直在尝试将Mac PackageMaker命令行构建移植到pkgbuild和productbuild,但是遇到问题。不幸的是,除了这个StackOverflow post以及pkgbuildproductbuild手册页之外,我没有发现很多文件可以证明这些新程序的工作方式。

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

/some_path/Applications
                       /MyProgram.app
          /Library
                  /Frameworks
                             /MyFramework.framework
                                                   /[library files...]


下面的命令行调用非常适合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


现在,我尝试使用pkgbuild编写此文件,但遇到了一个主要问题。我使用以下电话:

$ pkgbuild \
    --root /some_path \
    --version 1.0.0 \
    --install-location "/" \
    --scripts "./scripts/" \
    --identifier "com.my_company.pkg" \
    MyProgram.pkg


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


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


谁能阐明为什么它不像PackageMaker那样将MyProgram.app文件添加到/ Applications目录中?

最佳答案

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


在特殊目录结构上运行packagemaker command line可执行文件。此目录结构反映了Mac文件系统。在旧的但可靠的"PackageMaker How-to" tutorial中阅读更多内容。
运行pkgutil(pkgutil --expand)提取软件包内容
查看内容并确定要更改的内容。一些选项是欢迎消息,许可证和背景图片。
通过命令行添加命令来更改这些文件。查看"Automating Apple's PackageMaker" tutorial以获取更多信息。最简单的方法就是运行这样的echo '<background file="your_background.png">'
运行pkgutil(pkgutil --flatten)重建软件包。

关于macos - 将PackageMaker命令行构建安装程序移植到pkgbuild,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11796740/

10-13 07:19