Macos 解析/usr/sbin/installer的输出
我写的基本上是许多平台上安装服务的前端。我(显然)想知道的一件事是安装是否成功。在大多数平台上,这很容易:只需检查安装程序的返回代码/退出代码。但是,在Mac上(使用Macos 解析/usr/sbin/installer的输出,macos,installation,Macos,Installation,我写的基本上是许多平台上安装服务的前端。我(显然)想知道的一件事是安装是否成功。在大多数平台上,这很容易:只需检查安装程序的返回代码/退出代码。但是,在Mac上(使用/usr/sbin/installer),这并不容易,因为它总是退出0,并且您必须解析输出(在提供-verboseR选项之后),以确定它是否成功 我只是通过尝试和错误来解决这个问题,但我发现自己很难设计出那些,比如说,坏掉的包,来弄清楚当一个包以某种方式坏掉时,系统会说什么 所以我问,亲爱的Lazyweb:是否有一个规范的解析器用于
/usr/sbin/installer
),这并不容易,因为它总是退出0,并且您必须解析输出(在提供-verboseR
选项之后),以确定它是否成功
我只是通过尝试和错误来解决这个问题,但我发现自己很难设计出那些,比如说,坏掉的包,来弄清楚当一个包以某种方式坏掉时,系统会说什么
所以我问,亲爱的Lazyweb:是否有一个规范的解析器用于
/usr/sbin/installer-verboseR
的输出,或者至少有一个指南描述它输出的东西的种类?我已经找到了,这很有帮助,但并不能让我一路走到那里。一定有更好的东西;这似乎是一项常见的任务。您应该查看/var/log/install.log,它是安装程序所有组合输出的所在。此外,根据程序的性质,您可能会发现查看安装程序生成的收据很有用。这些可在/图书馆/收据中找到。有关更多信息,请参阅
在安装结束时,您会得到如下一些日志输出:
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)
虽然这里没有给出硬返回代码,但至少有足够的代码可以解析以确定安装是否成功。如果您想查看损坏的软件包是什么样子,只需更换其中一个飞行中的脚本(
preflight
,preinstall
,preupgrade
和post*
对应项)使用返回非零的脚本。它不必做任何其他事情,只需返回非零的内容(如中所述,任何其他返回值都会取消安装)。您所追求的可能是某种类型的,但此处并未真正记录:
并在这里实施:
如果您需要,这些搜索可能会为您提供大量示例文本:
- 及
- 及
- 开始于安装程序:阶段的行开始一个新阶段。文本可以作为标题显示给用户,并且完成百分比设置为0
- 以安装程序:状态开头的行是进度通知,包含可向用户显示的文本。没有给出完成的迹象
- 安装程序:%%开头的行表示完成程度:它们表示完成工作的分数,而不是百分比。(1.000000=完成,0.500000=一半)
- 成功完成由以下行指示:
安装程序:安装成功。
- 失败的安装由以下行指示:
安装程序:安装在任何时候都失败了
- 如果前一行包含括号内的文本(通常类似于:
,则括号内的文本可以作为失败原因显示给用户安装程序:安装失败(以下安装步骤失败:运行)