Microsoft 承諾為嵌入式客戶提供 Windows 作業系統的關鍵修補程式。這些修補以「已更新的 SLD 元件」形式發布,匯入元件資料庫後,客戶下次設計或升級組態即可使用。然而,元件 QFE 無法直接套用至已部署裝置——這與 Windows XP Professional 的 QFE 機制截然不同。
Windows XP Embedded SP1 引入 裝置更新代理 (Device Update Agent, DUA) 元件,該服務運行於嵌入式裝置上,支援遠端維護與管理工作。搭配指令碼轉換器,可將 QFE 更新封裝並推送至目標裝置。
本文以 2002/08/22 釋出的 QFE Q323759(Microsoft Internet Explorer 累積修補程式)為例,示範完整部署流程。
> **重要限制**:QFE 僅適用於更新已部署系統中的現有元件,不適用於:新增元件至已部署裝置、受增強寫入篩選器 (EWF) 保護的裝置、離線映像檔。「其他資訊」區段詳細列出該元件變更的二進位檔案與登錄機碼異動,是後續編寫更新指令碼的依據。
修改登錄前必須了解目標裝置組態。分析離線組態映像,發出更新指令前先載入軟體配置單元:
regedit)HKEY_USERS 或 HKEY_LOCAL_MACHINE\Windows\System32\Config,選取 SOFTWARE 檔案OfflineSoftware)| 設定項目 | 本範例數值 | 說明 |
|---|---|---|
| Require HTTP Support | ✅ 勾選 | 需透過 HTTP 從遠端 Web 伺服器下載更新 |
| 輪詢間隔 | 30 秒 | 測試階段設低值;正式環境視需求調整 |
| Poll Jitter | ❌ 取消勾選 | 避免所有裝置同時輪詢造成伺服器尖峰負載 |
| Working Directory | C:\dua\working | 指令檔執行期間的暫存目錄,不存在則自動建立 |
| 命令路徑類型 | Remote using HTTP | DUA 透過 HTTP 輪詢遠端指令檔 |
| 主機名稱 | your-web-server | 僅輸入主機名,勿含協定前綴 |
| 完整指令檔路徑 | Cmdfiles\Qfe01.dup | 初始指令檔的相對路徑(拉機制必須指定) |
| Advanced Settings → 協定 | HTTP | 預設為 HTTPS,此處改為 HTTP |
Cmdfiles 虛擬目錄,設定允許匿名瀏覽(因未提供帳號密碼)。
完成上述設定後,即可建置映像並部署至目標嵌入式裝置。
.dup 為編譯後的 DUA 指令碼 (.dus)。依據 QFE 發行說明的二進位檔案清單與登錄變更,編寫 Qfe01.dus:
Windows\System32\msHtml.dllWindows\System32\shdoclc.dllWindows\System32\shdocvw.dllWindows\System32\url.dllWindows\System32\urlmon.dllWindows\System32\wininet.dll%systemdrive%\dua\working\)%System32% 覆寫舊版// 下載 QFE 二進位檔案(需將 myhostname 替換為實際 Web 伺服器主機名)
HTTPGET,0,,myhostname,,cmdfiles/Q323759/Q323759_msHtml.dll,1,%systemdrive%\dua\working\msHtml.dll,1
HTTPGET,0,,myhostname,,cmdfiles/Q323759/Q323759_shdoclc.dll,1,%systemdrive%\dua\working\shdoclc.dll,1
...(其餘 4 個 DLL 同理)...
// 重開機時移動檔案到 System32 覆寫
MOVEFILE,0,1,%systemdrive%\dua\working\mshtml.dll,1,%System32%\msHtml.dll,DAMOVEFILE_DELAY_UNTIL_REBOOT
MOVEFILE,0,1,%systemdrive%\dua\working\shdoclc.dll,1,%System32%\shdoclc.dll,DAMOVEFILE_DELAY_UNTIL_REBOOT
...(其餘 4 個 DLL 同理)...
// 更新登錄機碼值(假設機碼已存在)
// HKLM\Software\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273}
REGSETVALUE,0,HKEY_LOCAL_MACHINE,0,SOFTWARE\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273},0,,DAREG_SZ,Q323759
REGSETVALUE,0,HKEY_LOCAL_MACHINE,0,SOFTWARE\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273},0,IsInstalled,DAREG_DWORD_LITTLE_ENDIAN,1
REGSETVALUE,0,HKEY_LOCAL_MACHINE,0,SOFTWARE\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273},0,Version,DAREG_SZ,6,0,2719,2200
REGSETVALUE,0,HKEY_LOCAL_MACHINE,0,SOFTWARE\Microsoft\Active Setup\Installed Components\{61E6EAE5-7821-4AC1-9BBD-AED032A8E273},0,Locale,DAREG_SZ,EN
...(Internet Settings 相關機碼同理)...
> **注意**:
> - 指令碼中 myhostname 必須替換為實際 Web 伺服器主機名
> - 登錄機碼若不存在,需先用 REGCREATEKEY 建立(參閱 DUA 產品文件)
> - 檔案移動僅在重開機時發生;登錄變更即時生效
Qfe01.dus 編譯為 Qfe01.dupQfe01.dup 與 7 個 DLL 檔案置於 Web 伺服器的 Cmdfiles\ 目錄下(結構:Cmdfiles\Qfe01.dup、Cmdfiles\Q323759\*.dll)透過 DUA 的拉機制,嵌入式裝置可在無人值守情況下自動套用 QFE 修補程式。關鍵在於:預先在映像中納入 DUA 元件、正確設定 HTTP 輪詢參數、依據 QFE 發行說明精確編寫下載/移動/登錄指令碼。此流程雖較桌面版 Windows Update 複雜,卻是嵌入式系統生命週期管理中不可或缺的安全維護手段。