解析 /usr/sbin/installer 的输出

jos*_*hk0 4 macos installation

我正在编写基本上是许多平台上安装程序服务的前端。我(显然)想知道的一件事是安装是否成功。在大多数平台上,这很简单:只需检查安装程序的返回代码/退出代码即可。但是,在 Mac 上(使用/usr/sbin/installer)就不是那么容易了,因为它总是退出 0,并且您必须解析输出(在提供-verboseR选项之后)才能确定它是成功还是失败。

我只是通过反复试验来解决这个问题,但我发现很难设计自己的包,例如,损坏的包,以弄清楚当包以某种方式损坏时系统会说什么。

所以我问,亲爱的 Lazyweb:是否有一个规范的解析器用于 的输出/usr/sbin/installer -verboseR,或者至少有一个描述它输出的东西种类的指南?我找到了this,这有帮助,但并没有让我一路走好。一定有更好的东西;这似乎是一项常见的任务。

Sto*_*bor 5

您所追求的是某种类型的可能但并非真正记录在此处:http : //lists.apple.com/archives/installer-dev/2006/Aug/msg00029.html 并在此处实施:http : //glimmerblocker.org/browser/trunk/NotificationApp/src/NotificationApp.m?rev=390#L311

如果您需要,这些搜索可能会为您提供大量示例文本:

http://lists.apple.com/archives/installer-dev/2006/Aug/msg00031.html表明bugtracker上可能有一些“官方”文档,但您需要 ADC 会员才能找到...

我发现了什么:

  • 线开始installer:PHASE了一个新的阶段。文本可以作为标题显示给用户,完成百分比设置为 0。

  • 开头installer:STATUS的行是进度通知,包含可以显示给用户的文本。没有给出完成的指示。

  • 开始的行installer:%表示完成程度:它们表示已完成工作的 FRACTION,而不是 PERCENTAGE。(1.000000 == 完成,0.500000 == 中途)

  • 成功完成由以下行表示: installer: The install was successful.

  • 失败的安装由行指示:installer: The install failed在任何时间。

  • 如果前一行包含括号内的文本(通常类似于:installer: The install failed (The following install step failed: run <...>)那么括号内的文本可以作为失败原因显示给用户。