Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

為 Windows XP Embedded 建立自訂元件:從偵錯工具到 Component Designer 完整實作流程

編輯:XP 系統基礎知識

前言

Windows XP Embedded (XPe) 允許開發者建立客製化的精簡作業系統映像。雖然可透過匯入 .inf 驅動程式或 Target Analyzer 掃描硬體 (Devices.pmq) 來建立元件,但為第三方應用程式建立自訂元件仍需手動偵測其安裝足跡 (檔案、登錄、相依 DLL、COM 元件、服務等)。本文以「TimerShot PowerToy」與自製「PhotoDisplay」應用程式為例,完整示範從安裝監控、依賴分析、元件建立、映像建置到目標機測試的全流程。

開發與目標環境架構

  • 開發電腦: Toshiba Tecra 9000,雙分區:C: (NTFS, WinXP Pro + 開發工具)、D: (FAT32, 700MB, 給 XPe 映像)。boot.ini 雙重開機選單。
  • 目標裝置: 同一台筆電的 D: 分區啟動 XPe,外接 Logitech USB Camera。
  • 應用程式: TimerShot (定時擷取影像存本機/網路) + PhotoDisplay (瀏覽 JPEG)。

偵錯工具箱

類別工具用途
開發機 (安裝前後快照/靜態分析)InCtrl5 (ZDNet)檔案系統/登錄/INI 快照比對,產生差異報告
Dumpbin (Visual Studio)靜態分析 EXE/DLL 匯入表,列出相依 DLL
Depends (Dependency Walker)圖形化顯示模組相依關係 (含延遲載入、轉發)
RegMon (Sysinternals)即時監控登錄讀寫/查詢/刪除操作
FileMon (Sysinternals)即時監控檔案系統開啟/讀寫/刪除/重命名
XPe 開發工具組Target Analyzer Probe, Component Designer, Component Database Manager, Target Designer
目標機 (動態執行時偵錯)RegMon, FileMon在精簡映像上執行應用程式,捕捉缺失 DLL/登錄/COM 啟動失敗

建立自訂元件完整流程

步驟 1:在開發機捕獲安裝足跡 (以 TimerShot 為例)

  1. 下載 TimershotPowertoySetup.exe 至本機 (勿直接執行安裝)。
  2. 啟動 InCtrl5,指定安裝程式路徑與報告輸出資料夾,點擊 GO!。
    InCtrl5 介面
  3. InCtrl5 先掃描快照 → 自動啟動安裝程式 → 安裝完成 → 掃描第二次快照 → 產生差異報告 (檔案、登錄、INI、autoexec.nt/config.nt 變更)。
  4. 報告中會列出所有新增/修改/刪除的檔案與登錄值,這是元件定義的核心依據。

步驟 2:分析應用程式相依性 (靜態 + 動態)

  1. 用 Dumpbin /imports TimerShot.exe 或 Depends.exe 開啟主程式,列出所有靜態連結 DLL (Kernel32, User32, GDI32, OleAut32, WIA 相關 DLL 等)。
  2. 注意:Depends 也會顯示延遲載入 DLL與COM 物件 (透過 CoCreateInstance),這些靜態分析常漏掉。
  3. 對每個相依 DLL,在開發機的 C:\Windows\System32 或應用程式目錄確認存在,並記錄檔案版本。

步驟 3:使用 Component Designer 建立元件定義 (.SLD)

  1. 開啟 Component Designer → File → New → Component。
  2. General 頁籤:填入元件名稱 (如「TimerShot PowerToy」)、版本、描述、群組 (如「Applications\Custom」)。
  3. Files 頁籤:依 InCtrl5 報告與相依分析,逐一加入檔案:
    - 來源路徑 (開發機實際路徑)
    - 目的地路徑 (目標機路徑,如 %ProgramFiles%\TimerShot\, %SystemRoot%\System32\)
    - 設定屬性:Compression、Uninstall 等。
  4. Registry 頁籤:匯入 InCtrl5 產生的登錄差異 (.reg 或手動逐項加入),注意路徑變數化 (用 %SystemRoot%, %ProgramFiles%)。
  5. Dependencies 頁籤:勾選必要的核心 XPe 元件,例如:
    - Windows Core (基本核心)
    - WIA Service (Windows Image Acquisition,TimerShot 需要)
    - USB Support (USB 相機需求)
    - Internet Explorer Core (若應用使用 MSHTML/WinINet)
    - COM+ / DCOM (若用到 COM 元件)
  6. Groups / Build Order:設定群組與建置順序。
  7. 儲存為 TimerShot.sld。

步驟 4:匯入元件資料庫並建置映像

  1. 開啟 Component Database Manager → Import 將 TimerShot.sld 匯入資料庫。
  2. 開啟 Target Designer → 建立新組態 → 從資料庫拖曳「TimerShot PowerToy」元件加入組態。
  3. Target Designer 會自動解析相依鏈結,提示加入必要核心元件。
  4. 執行 Build → Build Image,輸出至 D:\Windows Embedded Images\。

步驟 5:部署到目標機並測試 (關鍵驗證階段)

  1. 將建置輸出的映像部署到目標機 D: 分區 (可用 Ghost、ImageX 或 XPe 內建部署工具)。
  2. 啟動目標機進入 XPe,登入系統。
  3. 在目標機執行 RegMon 與 FileMon,過濾 TimerShot 相關進程。
  4. 啟動 TimerShot,觀察監控視窗是否出現 FILE NOT FOUND、REGISTRY KEY NOT FOUND、CLASS NOT REGISTERED 等錯誤。
  5. 若有缺失:回開發機 Component Designer 補充檔案/登錄/相依元件,重建映像再測試,直到零錯誤。
  6. 同樣測試自製的 PhotoDisplay 應用程式。

步驟 6:移除偵錯工具、最終映像釋出

確認應用程式完美運行後,在 Target Designer 組態中移除 RegMon、FileMon 等偵錯工具元件,重新建置最終釋出版映像。

關鍵經驗總結

  • InCtrl5 快照法是捕獲安裝足跡最高效方法,但需在乾淨環境 (關閉防毒、索引服務、其他背景程式) 執行以減少雜訊。
  • Depends + 目標機 FileMon/RegMon 是捕捉「動態載入 DLL」與「COM 啟動失敗」的唯一可靠手段,靜態分析永遠不夠。
  • 相依核心元件的選擇最考驗經驗:建議從最小核心開始,依測試錯誤逐步加入 (WIA、USB、Shell、IE Core 等常被遺漏)。
  • 路徑變數化 (%SystemRoot%, %ProgramFiles%, %AllUsersProfile%) 確保元件在不同目標機磁碟配置下皆能正確部署。
  • 版本控管:每次修改元件遞增版本號,Component Database Manager 可維護多版本。

結語

建立 XPe 自訂元件本質上是「將應用程式安裝行為標準化、模組化」的過程。掌握 快照比對 → 相依分析 → 元件定義 → 目標機驗證迴圈 這套方法論,即可將任何第三方應用程式封裝為可重複部署、相依自動解析的 XPe 元件,實現真正的模組化嵌入式系統建置。

相關資源連結

  • Windows XP PowerToys 下載:Microsoft 官方頁面 (含 TimerShot)
  • Sysinternals 工具套件 (RegMon, FileMon, Depends 等):Sysinternals 官網
  • Windows XP Embedded 開發工具文件:MSDN Library / Windows Embedded 開發人員中心
Copyright © Windows教程網 All Rights Reserved