2009-07-07 26 views
4

我寫的東西基本上是一個前端來安裝程序在許多平臺服務的輸出。我(顯然)想知道的一件事是安裝是否成功。在大多數平臺上很容易:只需檢查安裝程序的返回代碼/退出代碼即可。然而,這不是在Mac(使用/usr/sbin/installer)上那麼容易,因爲它總是返回0,你必須解析輸出,以確定它是否成功還是失敗(提供-verboseR選項之後)。解析/ usr/sbin目錄/安裝

我只希望這出由試驗和錯誤,但我發現很難工程師自己說的,比如說,破包,找出當一個包以某種方式被打破,系統會說什麼。

所以我問,親愛的Lazyweb:是否有一個規範解析器的輸出/usr/sbin/installer -verboseR,或至少一個指南,描述它輸出的東西種類?我發現this,這有助於但不會讓我有所有的方式。必須有更好的東西;這似乎是一個常見的任務。

回答

4

什麼你以後是種 - 的 - 也許,但並非真正排序的,這裏記錄: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 <...>)那麼括號中的文字可以顯示給用戶作爲一個失敗原因

2

你應該看看/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

1

如果你想看到什麼破包的樣子,只需更換飛機上的腳本(preflightpreinstallpreupgradepost*同行)與返回非零的腳本之一。它沒有做別的,只返回的東西不爲0(如Apple software delivery guide記錄,任何其他的返回值取消安裝)。

+0

聽起來不錯,但我想要支持對安裝程序的輸出做出更明確的答覆。謝謝。 – 2009-07-13 16:22:03