1. <cite id="lxzvx"><menu id="lxzvx"><samp id="lxzvx"></samp></menu></cite>

        1. <big id="lxzvx"><form id="lxzvx"></form></big>
            <strike id="lxzvx"></strike>
                <th id="lxzvx"><address id="lxzvx"></address></th>
                歡迎光臨
                我們一直在努力

                Windows Live Essentials安裝0×80040609錯誤

                建站超值云服務器,限時71元/月

                  前兩天在家中另一臺計算機上安裝最新的 Windows Live Essentials 2011 時,遇到了無法安裝的問題,重試多次均是如此。按照 Windows 程序的老規矩,安裝程序給出了錯誤代碼:0×80040609

                  尋找方案無果

                  第一反應當然是點擊“獲取幫助”鏈接,但彈出的幫助網頁上并沒有提供有價值的幫助。

                  第二方案,上網搜索。果然這個問題在網上不少人遇到,而且有朋友 Leo Chen 寫出了解決方法,那就是“打開 Windows 防火墻”,但實際上它在我的電腦上運行正常。看來,我遇到的問題原因并不在這里:

                image

                  上圖來自 Leo Chen 的文章。在我的計算機上,錯誤ID相同,但“源”是不同的 WLiveRemoteService。也就是說,可能會有多種錯誤原因產生同一個錯誤代碼。我們不能什么時候都依葫蘆畫瓢,而是應該具體情況具體分析,找準問題的根本原因。

                  wbpluto喜歡在介紹錯誤解決方法時,能同時介紹自己分析并找出錯誤原因的步驟,并對其中的原理進行解釋,讓讀者能夠學到更多真本事,也就是“授之以漁”,而不是只會說“這個問題應該這樣解決”

                  分析原因

                  首先想到,微軟在 Windows 中的軟件包,一般都使用的是 MSI 格式,雖然 Windows Live Essentials 2011 安裝文件是 EXE 可執行程序,但由于其是多個應用程序的集合,應該也是由 MSI 打包而來的。如果能夠找到其中的 MSI 安裝包,單獨安裝并分析出錯的組件,那應該就很好分析并解決了。

                  我使用能夠查看 EXE 文件內部資源的 PE Explorer 軟件打開安裝包,發現,其中有一個文件夾名為 PACKAGE。比較可疑的名字,這里面的資源會不會是各個組件的 MSI 安裝包呢?

                2

                  在PACKAGE 上單擊右鍵,釋放所有資源,直接單擊確定,不用設置什么,讓軟件將程序中所有的資源都釋放出來:

                3

                  找到釋放出來的文件夾,打開 PACKAGE 文件夾,其中的文件都是 RES 后綴名:

                4-1-res

                  其實啊,他們都是 CAB 格式的存檔文件,不信把它們全都重命名為 CAB 后綴看看吧。這個步驟使用命令更方便,在 PACKAGE 文件夾上按住SHIFT單擊右鍵,打開命令提示符窗口,運行:

                  ren *.res *.cab

                  即可把所有文件一起重命名了。雙擊打開,果然是可以打開的,CAB 里面是 7z 壓縮文件!我用 WinRAR 把 CAB 中的 7Z 們一股腦都解壓縮出來:

                4-2-7z

                  精彩內容,請點擊下一頁!#p#副標題#e#  7z 文件的文件名已經泄漏天機,很明顯這些文件就是各個 Live 軟件組件的安裝包,只不過被壓縮成 7z 格式了。于是再把它們一股腦釋放出來,暈,竟然又得到了 CAB 文件:

                4-3-cab

                  我就不信這是個無底洞了,再釋放,終于得到了想要的 MSI 安裝包:

                4-4-msi

                  微軟把這些安裝包都視為寶貝,竟然包裹了一層又一層,這是喜劇電影里才有的情節吧!微軟真是太幽默啦!完整的包裹關系為:

                  MSI → CAB → 7z → CAB

                  算了,一笑而過吧。來看看手動使用 MSI 來安裝出錯的那個軟件包會怎么樣,因為 MSI 提供的原始出錯信息肯定比打包后的 EXE 更接近真實的錯誤原因。根據 EXE 錯誤提示中的“源”屬性,找到 WLRemoteService-i386.msi

                55

                  運行之后,提示找不到 Windows Live Remote Service 的原始安裝文件 WLRemoteService-i386.msi,讓手動指定(此處未截圖)。手動指定到此處的 WLRemoteService-i386.msi,結果還是說找不到。這讓我想起之前《Visual Studio 2008 安裝失敗(“Web 創作組件”無法安裝)的解決辦法》一文中,也有類似的問題,是因為安裝了相同組件的不同版本,導致另一個版本無法安裝,系統不認可這個版本的 MSI 安裝包。

                  于是想起來,之前安裝過 Windows Live Essentials 2011 的 Beta 版本,應該是卸載的時候沒有卸載干凈,雖然控制面板“卸載程序”中找不到 Live 組件了,但在系統中還保留了 Windows Live Remote Service,于是最終導致了這樣的問題。

                  動手解決

                  可是沒有舊版本的安裝包,也找不到卸載程序,怎么樣將其卸載掉安裝新版呢?

                  安裝在系統中的 MSI 程序包都在注冊表中有記錄,只要找到并刪除這個記錄,也就相當于將其卸載,這樣就可以順利安裝新版本了。于是打開注冊表編輯器,搜索“Windows Live Remote Service”名稱,果然,在 HKEY_CLASSES_ROOT\Installer 中找到了這個組件的記錄。將 Installer 下的這個字符串項整個刪除(使用 Windows Installer Cleanup 程序應該也同理),重新安裝新版的 WLRemoteService-i386.msi,果然就能夠順利安裝了!

                  對比了一下 HKEY_CLASSES_ROOT\Installer 中前后兩個版本的記錄,他們的 PackageCode 代碼是不同的。在安裝和卸載 MSI 軟件時,系統就是根據這個暗號來判斷 MSI 文件是否是軟件原始的安裝包的:

                6

                6-2

                  最后重試重新運行完整的 EXE 安裝包安裝 Windows Live Essentials 2011,本以為會順利完成,但再次出現了兩個錯誤:

                7

                  現在就一點都不用緊張了,應該是同樣的原理,有其他的幾個舊版本組件也沒有正常卸載掉。按照相同的方法將他們清理掉,再次安裝,就完全沒有問題了!

                  總結

                  至此,通過一步一步的分析深入,非常精確的確定了的原因和病灶,并順利的接解決了此次問題,并且還發現了微軟打包程序的小秘密,可以說收獲還是不小的。在此wbpluto把其中的經驗分享給大家,希望大家以后遇到問題也能夠自己解決。

                贊(0)
                版權申明:本站文章部分自網絡,如有侵權,請聯系:west999com@outlook.com 特別注意:本站所有轉載文章言論不代表本站觀點! 本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯系。未經允許不得轉載:IDC資訊中心 » Windows Live Essentials安裝0×80040609錯誤
                分享到: 更多 (0)

                評論 搶沙發

                • 昵稱 (必填)
                • 郵箱 (必填)
                • 網址
                宅男午夜福利美女来袭|欧美三级电影|影音先锋成人av共享|亚洲快播日韩AV手机在线观看
                1. <cite id="lxzvx"><menu id="lxzvx"><samp id="lxzvx"></samp></menu></cite>

                    1. <big id="lxzvx"><form id="lxzvx"></form></big>
                        <strike id="lxzvx"></strike>
                            <th id="lxzvx"><address id="lxzvx"></address></th>