解析/ usr/sbin目录/安装

问题描述:

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

我只希望这出由试验和错误,但我发现很难工程师自己说的,比如说,破包,找出当一个包以某种方式被打破,系统会说什么。

所以我问,亲爱的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表明,有可能是在错误追踪一些“官方”的文档,但你需要一个ADC会员发现......

我已经找到了:

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

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

  • 线开始installer:%指示完成度:他们指出这项工作的完成分数,而不是百分比。 (1.000000 ==完整,0.500000 ==一半)

  • 成功完成由线表示:installer: The install failed在任何时间:installer: The install was successful.

  • 安装失败是由线表示。

  • 如果前面的行包含括号中的文字(通常是这样的:。installer: The install failed (The following install step failed: run <...>)那么括号中的文字可以显示给用户作为一个失败原因

你应该看看/var/log/install.log,这就是从安装程序组合输出所有去。另外,根据程序的性质,您可能会发现查看安装程序生成的收据很有用。这些可在/ Library/Receipts中找到。有关更多信息,请参阅this Apple technote

在安装结束后,你得到一些日志输出是这样的:

Jul 10 19:26:24 ant Installer[24618]: Starting installation: 
Jul 10 19:26:24 ant Installer[24618]: Finalizing installation. 
Jul 10 19:26:24 ant Installer[24618]: IFDInstallController 857550 state = 5 
Jul 10 19:26:24 ant Installer[24618]: Displaying 'Install Succeeded' UI. 
Jul 10 19:26:28 ant installdb[24624]: done. (0.006u + 0.004s) 

虽然没有硬返回代码在这里给出,至少还有足够的分析,以确定是否安装成功。

+0

我明白,我可以很容易地找出是否安装成功;我正在寻找关于*安装程序可能输出的所有*的权威指南,我会继续寻求其他答案,但是谢谢你。 – 2009-07-13 16:22:57

如果你想看到什么破包的样子,只需更换飞机上的脚本(preflightpreinstallpreupgradepost*同行)与返回非零的脚本之一。它没有做别的,只返回的东西不为0(如Apple software delivery guide记录,任何其他的返回值取消安装)。

+0

听起来不错,但我想要支持对安装程序的输出做出更明确的答复。谢谢。 – 2009-07-13 16:22:03