Click here to Close
 
打印

[原创] 分享:如何修复安装软件造成的白苹果

本主题由 绝版男人 于 2008-5-23 16:44 提升

分享:如何修复安装软件造成的白苹果

天天测试各种beta软件,白苹果遇到的次数比safari崩溃的次数还多。最近新软件不多,有时间写点东西,分享下修复由于安装软件造成的白苹果的经验。

造成白苹果原因多种多样,比如删错了文件,替换错了字体等等。我这里只说安装完一个软件后重启机器变白苹果的情况,基本可以保证不会因为软件让你不得不刷机。

下面的修复过程有可能并不简单,也很费时。适合装了很多软件,不想重刷,重新装过所有软件的人看。或者大家可以用winpwn,做一个装好自己需要软件的固件(似乎还不够稳定)。这样恢复更快。

首先白苹果就是springboard启动不了。如下图(绝版男人制作)。
                                           
比如你装了(或者删了)HWPen,重启机器之后,白苹果了。一般这种情况,iphone还都是可以连接上PC Suite和WinSCP的,有这两个工具,白苹果就可以修复。(如果这两个软件不认iphone,那刷机去吧)

既然白苹果是软件安装造成,我们只要把软件安装做的事情都反向恢复就可以了。即:我们要做的就是手动卸载干净造成白果的软件。所以需要知道软件安装都做了什么。

一种方法是看软件在源里的脚本,不过有些源不允许非installer访问(可以伪装UserAgent查看,有些繁琐),所以这里说另一种通用方法,就是看iphone里的安装脚本。

本机安装过的软件,脚本都存放在/var/mobile/Library/Installer/LocalPackages.plist 这个文件里(1.1.2的把mobile改成root)。installer3.1的脚本都变为二进制了。所以需要论坛上 super3547 发的plist转换软件,附件有下载,原帖:(http://www.weiphone.com/viewthread.php?tid=99145),这个软件后面修复白果也有用,好东西。

把上面地址的plist文件复制到电脑上(不管用pc suite还是winscp)用convertplist打开,另存为一个可以用记事本打开的文件。然后打开,搜索到HWPen的安装脚本区块。所有脚本如下:
引用:
<dict>
    <key>bundleIdentifier</key>
    <string>cn.com.hanwang.HWPen</string>
    <key>name</key>
    <string>HWPen</string>
    <key>version</key>
    <string>1.0.1 Beta</string>
    <key>description</key>
    <string>Hanwang Handwriting IME. 汉王手写输入法。</string>
        <key>contact</key>
        <string>mars1907@gmail.com</string>
        <key>maintainer</key>
        <string>mars1907</string>
    <key>location</key>
    <string>http://iphonecake.com/iphonecake_zips/HWPen-1.0.1.zip<;/string>
    <key>sponsor</key>
    <string>iPhoneCake.com</string>
        <key>url</key>
        <string>http://www.iphonecake.com/r.php?nid=265<;/string>
    <key>size</key>
    <string>1537788</string>
    <key>scripts</key>
    <dict>
       <key>install</key>【此标签下都是安装脚本,辅助参考,需结合下面的卸载脚本一起看】
        <array>
            
            <array>
               <string>CopyPath</string>
                <string>HWPen</string>
                <string>/Library/HWPen</string>
            </array>
            <array>
                <string>Exec</string>
                <string>/Library/HWPen/plistedit /System/Library/LaunchDaemons/com.apple.SpringBoard.plist add /Library/HWPen/libHWIME.dylib</string>
            </array>
            <array>
                <string>Notice</string>
                <string>You must restart your iPhone 请重启iPhone!</string>
            </array>
        </array>
        <key>update</key>
        <array>
            <array>
                <string>CopyPath</string>
                <string>HWPen</string>
                <string>/Library/HWPen</string>
            </array>
            <array>
                <string>Notice</string>
                <string>You must restart your iPhone 请重启iPhone!</string>
            </array>
        </array>
        <key>uninstall</key>【此标签下都是卸载脚本,主要参考】
        <array>
            <array>
               <string>Exec</string>
                <string>/Library/HWPen/plistedit /System/Library/LaunchDaemons/com.apple.SpringBoard.plist delete /Library/HWPen/libHWIME.dylib</string>
            </array>
            <array>
               <string>RemovePath</string>
                <string>/Library/HWPen</string>
            </array>
            <array>
                <string>Notice</string>
                <string>You must restart your iPhone 请重启iPhone!</string>
            </array>
        </array>
    </dict>
<key>category</key>
<string>[iPhone Cake]</string>
<key>date</key>
<string>1208996799</string>
</dict>
脚本是xml格式文件,需要你稍微对xml有点感觉。我不能在从头讲一遍xml,不过幸好下面的操作基本照葫芦画瓢就行。

我们需要关心的,只是软件安装时做了什么,以及软件卸载应该做什么,所以,请看<key>install</key>和<key>uninstall</key>下的内容。
安装命令很多,我们只需要注意类似如下的命令(上面高亮加粗的部分)
引用:
               <string>CopyPath</string>
                <string>HWPen</string>
                <string>/Library/HWPen</string>
引用:
                <string>RemovePath</string>
                <string>/Library/HWPen</string>
以及
引用:
                <string>Exec</string>
                <string>/Library/HWPen/plistedit /System/Library/LaunchDaemons/com.apple.SpringBoard.plist delete /Library/HWPen/libHWIME.dylib</string>
这三组命令分别是拷贝文件,删除文件,执行命令的作用。

软件安装时都会拷贝文件到iphone,容易造成白果的程序一般都执行一些命令(Exec这个脚本)。所以我们可以参照安装脚本以及卸载脚本,把软件手动删除干净。

凡是<string>CopyPath</string>下面的内容,就是安装时复制的内容,也就是我们卸载是需要删掉的内容(也应该是<string>RemovePath</string>下面的内容),凡是<string>Exec</string>下的内容,就是要在终端执行的命令。

手动卸载主要参照脚本内<key>uninstall</key>下的内容,例如卸载脚本里有
引用:
<string>RemovePath</string>
<string>/Library/HWPen</string>
那我们就删除/Library/HWPen目录,
注:同时也要参考<string>CopyPath</string>下面的内容,因为有些软件不是卸载的很干净。

卸载脚本里有
引用:
                <string>Exec</string>
                <string>/Library/HWPen/plistedit /System/Library/LaunchDaemons/com.apple.SpringBoard.plist delete /Library/HWPen/libHWIME.dylib</string>
那我们就打开终端,手动执行
引用:
/Library/HWPen/plistedit /System/Library/LaunchDaemons/com.apple.SpringBoard.plist delete /Library/HWPen/libHWIME.dylib
这个命令。(Exec下的内容就是要执行的命令字符串)
如此类推,把所有卸载脚本里需要installer做的,你手动做了即可。

上面可能说的不是很清楚,不过还是要大家实践时才会明白。不是太好解释。

以上就是手动卸载的过程。有些软件的安装很复杂,可能手动卸载很麻烦。

有些时候,如果你看到安装脚本里出现com.apple.SpringBoard.plist这个文件,那很有可能是安装脚本写入com.apple.SpringBoard.plist了。如果白苹果,你可以参照绝版男人的帖子(http://www.weiphone.com/thread-101157-1-1.html),删掉造成白果的程序添加的字段(一般应该插入在最后)。
唯一要补充的是,如果com.apple.SpringBoard.plist打开是乱码,也用convertplist转换即可。

以上就是我如何修复软件造成白果的一些经验,希望能帮到所有爱装软件的朋友。

[ 本帖最后由 hotsjf 于 2008-5-8 15:27 编辑 ]

附件

convertplist.rar (43.55 KB)

2008-5-8 14:31, 下载次数: 245

本帖最近评分记录
  • 绝版男人 经验 +5 助人为乐^_^ 2008-5-23 17:01
  • 绝版男人 人气 +38 助人为乐^_^ 2008-5-23 17:01
  • 绝版男人 we券 +5 助人为乐^_^ 2008-5-23 17:01
  • alucardking 人气 +3 就这么多,笑纳! 2008-5-9 16:02
  • andy88zhang 经验 +15 哈哈,以后白了就不用刷机,谢谢 ... 2008-5-9 02:00
  • andy88zhang 人气 +30 哈哈,以后白了就不用刷机,谢谢 ... 2008-5-9 02:00
  • andy88zhang we券 +15 哈哈,以后白了就不用刷机,谢谢 ... 2008-5-9 02:00
DIY 自己的源 !iPhoneCake.com 。找软件,你会想到iPhoneCake吗?

TOP

沙发,我估计有些同志不一定看的懂,呵呵,这个是个不错的方法,可以试试

TOP

顶起好帖

TOP

厄  收藏下  相信以后用得到

TOP

先大致看了下   写得很好呢   看得懂  顶你

TOP

老大....好复杂啊.....看的我头大了

TOP

顶是必须的
凑字也是必须的
支持您
年轻时不懂事,经常拉着mm逛街,结果伤害了不少mm;现在不拉了,没想到又伤害不少……

TOP

你这个帖子问题严重啊,你怎么把转换后的xml重新转为2进制plist文件啊

你这是纸上谈兵啊

TOP


学习了
谢谢

TOP

学习了  谢谢分享   

TOP