我正在尝试通过PackageMaker的命令行界面自动化Mac OS X包构建。到目前为止,我设法构建包并运行postinstall脚本。告诉我有没有办法在通过命令行构建时添加选项?因为我希望用户有一个选项来运行或不运行postinstall脚本。 P.S。:我不想使用“.pmdoc”。这个选项很糟糕。
答案 0 :(得分:4)
在使用packagemaker的命令行参数挣扎一段时间后,我发现有更多最新且相关的工具:pkgbuild和productbuild。
我暂时没有使用它们,因为我找到了一种方法来做我想要折磨包装工的东西。
希望这会帮助一些不幸的Mac开发者。
答案 1 :(得分: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>
答案 2 :(得分:2)
这不是你问题的答案,但是一位经验丰富的Mac开发人员花了很多时间测试和使用PackageMaker进行战斗,最近给了我以下提示:
您可以从命令行调用PackageMaker, 但看起来苹果并没有在这方面付出太多努力,还有很多东西 不工作。所以请改用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工具”。