如何调试Mac OS X的pkg?

5

我创建了一个Mac OS X包 Frequon Invaders.app,并且它能够正常运行。 这个可执行文件是使用Go创建的。 然后我按照以下方式打包:

$ pkgbuild --component 'Frequon Invaders.app' --install-location /Applications FrequonInvaders.pkg
pkgbuild: Adding component at /Users/Dad/Documents/projects/Frequon-Invaders-2.2/installer-macos/Frequon Invaders.app
pkgbuild: Wrote package to FrequonInvaders.pkg

当我在Finder中打开FrequonInvaders.pkg时,会出现一个“安装Frequon Invaders”的窗口,让我完成安装过程,摘要部分显示“安装成功”。但是当我查看/Applications时,它并不存在。实际上,捆绑包中的所有文件都没有被安装。
[更新] 在四处寻找后,我发现该软件包似乎已经安装在最初构建Frequon Invaders.app的原始位置上。似乎完全忽略了--install-location /Applications
问题:
  • 如何使用pkgbuild构建一个真正安装在install-location指定位置的软件包?

自从写下这个问题以来,我注意到很多软件都是以 .dmg 的形式发布而不是 .pkg。例如:Skype、Open Office、H&R Block的税务软件、GIMP和Flight Gear。显然,对于许多开发人员来说,苹果的“包”并不值得折腾。 - Arch D. Robison
苹果软件包被许多供应商广泛使用,但通常用于无法适应 .dmg 格式的情况(例如修改系统文件)。 - tresf
2个回答

3

如何调试Mac OS X pkg?

.pkg文件的调试很棘手,因为没有简单的方法来获得详细输出。

sudo installer -pkg my_package.pkg  -target / -verbose

这可能有助于理解失败的步骤,但并不能帮助缩小问题范围...
接下来,你可以使用像The Unarchiver这样的工具来提取.pkg文件。你需要使用此实用程序将脚本提取两次。 注意:如果您更喜欢命令行:
xar -xf my_package.pkg # extract pkg
tar -xf Scripts        # extract scripts

随后,您可以尝试排除脚本出现的问题。

但在我的情况下,唯一能够调试脚本的方法是反复运行包并将调试语句输出到文件中。

例如:

# preinstall
echo "here!" >> /Users/Tom/Desktop/debug.txt

当我运行 xar -xf my_package.pkg 时,我没有得到一个 Scripts 文件夹,但是当我运行 pkgbuild 时,它记录了 Adding top-level postinstall script。有什么建议吗? - ImJimmi
抱歉,我的回答假定使用了 pkgbuild。如果使用 productbuild,我相信布局是不同的。如果您可以分享 .pkg 文件,我很乐意查看并修改答案。 - tresf

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接