天天看點

lzg_ad:關于XPE\WES目标設計器編譯鏡像時出現錯誤

當我們辛辛苦苦安裝完XPE或WES開發工具後,試圖生成鏡像檔案的時候,遇到以下錯誤:An internal error occurred while building the run-time image.是不是很讓人郁悶?

為什麼會出現這樣的問題呢,我通過我遇到這個問題的實際經曆來給大家分享一下經驗。

在Windows 7或者Vista上出現這樣的問題:

這樣的問題通常讓我們摸不着頭腦。我在Win7上安裝XPE開發工具就遇到了這樣的問題。因為我的安裝是在一台幹淨的開發機上進行的,沒有安裝或解除安裝任何其他的軟體,安裝過程也很順利,資料庫聯接正确,元件庫共享通路也沒有問題。最誇張的是建立工程和整個關聯檢查的過程也沒有任何錯誤,可是到了編譯鏡像的最後一關卻出現了以上的問題。

我仔細檢查了一下系統日志,發現XPE在最終生成鏡像的時候,試圖從元件庫中(..\Windows Embedded Data\Repositories)拷貝檔案到最終的鏡像的時候出現了問題,系統會阻止XPE拷貝這些貌似系統檔案的動态庫或者.inf檔案。而我使用Administrator的權限進行手動拷貝的時候,就不會出現問題。那麼最終解決問題的辦法就是:在..\Windows Embedded\bin檔案夾下的TDesign.exe上,點選滑鼠右鍵,選擇Run as Administrator來執行目标設計器,再進行編譯操作,一切OK。當然,這個問題僅限于在Vista和Windows 7上才會出現(這"多虧"了Vista和Windows 7增強的系統安全機制)。那麼,如果在其他作業系統上也出現了類似的問題呢:

在Windows XP或者Windows 2000上出現這樣的問題:

如果在别的作業系統上出現這樣的問題,那就不能怪系統權限的問題了。導緻該錯誤的主要原因可能是因為XPE資料庫中的元件索引群組件庫(Repositories)中的元件索引無法對應,進而導緻在編譯的過程中無法找到應該編譯到XPE鏡像檔案中的元件檔案。我們需要從以下方面來檢查我們的XPE開發工具:

1. 重新安裝XPE前沒有正确的解除安裝其他版本的XPE,是以使原有的XPE資料庫和新安裝的資料庫或者元件庫無法正常對應;

2. 新安裝的XPE開發工具版本和原有工程的版本不一緻,進而導緻編譯錯誤;

3. 元件庫或者資料庫被手動修改過,例如從Repositories目錄中手動拷貝或者删除過檔案,手動添加或者删除過資料庫中的元件記錄等等;

4. 錯誤的安裝了更新包或者錯誤的導入了自定義元件;

5. 安裝了類似于卡巴斯基之類的防毒軟體,進而阻止了這些類似于系統檔案的拷貝;

原來在論壇上遇到一個網友就曾經遇到過這樣的問題,原因是因為他将boot.ini放在了一個自定義元件中,産生了沖突導緻的。他本想是想用他自己的boot.ini代替原來的boot.ini,沒想到出現了問題。是以對于這樣的問題,如果我們實在找不到原因,就找一台幹淨的開發機,重新安裝一遍XPE開發工具,就應該沒問題了。

本文轉自雷志剛 51CTO部落格,原文連結:http://blog.51cto.com/leizhigang/237744