我正在编写基本上是许多平台上安装程序服务的前端。我(显然)想知道的一件事是安装是否成功。在大多数平台上,这很简单:只需检查安装程序的返回代码/退出代码即可。但是,在 Mac 上却不是那么容易(使用 /usr/sbin/installer
),因为它总是退出 0,并且您必须解析输出(在提供 -verboseR
选项之后)以确定它是成功还是失败。
我只是通过反复试验来解决这个问题,但我发现很难设计自己的包,例如,损坏的包,以弄清楚当包以某种方式损坏时系统会说什么。
所以我问,亲爱的 Lazyweb: /usr/sbin/installer -verboseR
的输出是否有规范的解析器,或者至少有一个描述它输出的东西种类的指南?我找到了 this ,它有帮助,但并没有让我一直走到那里。一定有更好的东西;这似乎是一项常见的任务。
最佳答案
你所追求的是一种有点可能但不是真的记录在这里: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 成员(member)才能找到...
我发现了什么:
installer:PHASE
开始一个新阶段。文本可以作为标题显示给用户,完成百分比设置为0。 installer:STATUS
开头的行是进度通知,包含可以显示给用户的文本。没有给出完成的指示。 installer:%
开头的 installer: The install was successful.
installer: The install failed
在任何时候。 installer: The install failed (The following install step failed: run <...>)
那么括号内的文本可以作为失败原因显示给用户。关于macos - 解析/usr/sbin/installer 的输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1090575/