我正在尝试通过 PackageMaker 的命令行界面自动构建 Mac OS X 包。到目前为止,我设法构建包并运行安装后脚本。告诉我有没有办法在通过命令行构建时添加选择?因为我希望用户可以选择运行或不运行安装后脚本。PS:我不想使用“.pmdoc”。这个选项很糟糕。
3 回答
正如我在评论中所说,PackageMaker 列出了我添加到项目中的文件并将其写入它的项目中。因此,如果我想添加一个文件,我需要打开项目,删除包含该文件的选项,最后,再次添加包含新文件的所有文件。或直接编辑项目的 XML 文件。使用 PackageMaker 自动构建我的项目的包是难以忍受的。所以我换了一个工具。一些谷歌搜索帮助我找到了 Packages。这个工具也不是很理想,但它比 Apple 的要好得多。Mojca 大致描述了到目前为止我使用 PackageMaker 所做的工作。在使用包时,我还必须使用项目文件。但该软件不会收集有关您添加到项目中的所有文件的信息,除非您明确告诉它这样做:
您可以在图片上看到我可以选择应该将哪些深度文件包含在项目中。.app文件夹下的所有文件夹都被手动扩展,以确保可以包含新文件的文件夹也没有被扩展。在这种情况下,它是Java文件夹。下一步也是最后一步是使用Ant组装包:
<exec executable="/usr/local/bin/packagesbuild">
<arg value="-v"/>
<arg value="${basedir}/Installer/MyProject.pkgproj"/>
</exec>
在用 packagemaker 的命令行参数折腾了一阵子之后,我发现有更多最新的和相关的工具:pkgbuild和productbuild。
我暂时没有使用它们,因为我找到了一种方法来做我想要折磨包装制造商的事情。
希望这会帮助一些不幸的 Mac 开发者。
这不完全是您问题的答案,但一位经验丰富的 Mac 开发人员最近花了很多时间测试和与 PackageMaker 斗争,给了我以下提示:
你可以从命令行调用PackageMaker,但看起来Apple并没有在这方面花费太多精力,而且很多事情都不起作用。因此,请改用 GUI 界面。
我决定接受他的教训。作为一个很好的折衷方案,对我有用的是一次只使用 GUI 来准备初始.pmdoc
文件并手动对这些 xml 文件进行任何后续更改。然后我们在 Xcode 项目中有一个调用 packagemaker 的目标:
packagemaker --doc $SRCROOT/Project.pmdoc --out $BUILT_PRODUCTS_DIR/stage/ProjectInstaller.pkg
hdiutil create $BUILT_PRODUCTS_DIR/Project-$VERSION.dmg -volname \"Project-$VERSION\" -fs HFS+ -srcfolder \"$BUILT_PRODUCTS_DIR/stage
所以我们现在需要做的(除了增加.pmdoc
文件中的版本)就是调用
xcodebuild -target Package
获取.dmg
图像。
.pmdoc
尽管您明确要求不要在从头开始创建包时主要用于分享(其他人)对 CLI 的不良体验,但我还是决定发布此答案。而且因为我第一次没有意识到使用 GUI 创建一个包并不意味着我每次想要修改某些东西或构建一个包时都需要使用“奇怪的 GUI 工具”。