繁体   English   中英

Mac OS X PackageMaker

[英]Mac OS X PackageMaker

我正在尝试通过PackageMaker的命令行界面自动化Mac OS X包构建。 到目前为止,我设法构建包并运行postinstall脚本。 告诉我有没有办法在通过命令行构建时添加选项 因为我希望用户有一个选项来运行或不运行postinstall脚本。 PS:我不想使用“.pmdoc”。 这个选项很糟糕。

在使用packagemaker的命令行参数挣扎了一段时间后,我发现有更多最新的相关工具: pkgbuildproductbuild

我暂时没有使用它们,因为我找到了一种方法来做我想要折磨的包装工。

希望这会帮助一些不幸的Mac开发者。

正如我在评论中所说,PackageMaker制作了一个我添加到项目中的文件列表,并将其写入其项目中。 所以,如果我想添加一个单独的文件,我需要打开项目,删除包含该文件的选项,最后,添加所有文件,包括新文件。 或者直接编辑项目的XML文件。 使用PackageMaker自动构建项目包是无法忍受的。 所以我改变了一个工具。 一些谷歌搜索帮助我fing 这个工具也不太理想,但它比Apple的好多了。 Mojca描述了我到目前为止用PackageMaker所做的事情。 在使用Packages时,我还必须使用项目文件。 但是,除非您明确告知它,否则此软件不会收集有关您添加到项目中的所有文件的信息: 这个屏幕很有帮助

你可以在图片上看到我可以选择在什么样的深度文件中包含项目。 手动展开.app文件夹下的所有文件夹,以确保不会展开包含新文件的文件夹。 在这种情况下,它是Java文件夹。 下一步和最后一步是使用Ant汇编包:

 <exec executable="/usr/local/bin/packagesbuild">
            <arg value="-v"/>
            <arg value="${basedir}/Installer/MyProject.pkgproj"/>
 </exec>

这不是你的问题的答案,但是一位经验丰富的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主要分享(别人的)从头开始创建软件包时遇到的错误经验。 而且因为我第一次没有意识到用GUI创建一个包并不意味着每次我想要修改某些东西或构建一个包时我都需要使用“怪异的GUI工具”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM