2016年7月10日

製作偽 Windows 7 SP2:整合 Windows 7 SP1 之後的更新到映像檔

最近使用 MSDN 下載的 Windows 7 with SP1 ISO 檔,在 1 台筆電進行安裝,於執行 Windows Update 時,幾乎沒有任何更新的進度,為了減少浪費更新時間,參考 Simplifying updates for Windows 7 and 8.1 製作出偽 Windows 7 SP2 映像檔,這樣的好處在於用該映像檔安裝完畢之後,執行 Windows Update 的時候,只需安裝少量的更新,大大地減少更新檔數量與下載時間。

在此以 Windows 7 with SP1 64 位元 ISO 檔為例,操作步驟如下:
  1. 使用掛載 ISO 檔的工具(Windows 7 可使用 Virtual CD-ROM Control Panel,Windows 8 之後內建掛載工具),將 Windows 7 with SP1 ISO 檔掛載變成光碟機
  2. 以系統管理員身分執行 cmd.exe,並建立用來儲存下載更新檔的目錄 Rollup
    md D:\Rollup
  3. Microsoft Update Catalog 網站下載從 Windows 7 SP1 發行之後,到 2016 年 4 月之間的便利彙總套件 (Rollup Package, KB3125574),將其儲存在 D:\Rollup 目錄。
    目前 Microsoft Update Catalog 網站會需要 ActiveX 元件,所以只能使用 IE 6 以上的瀏覽器下載,預計今 (2016) 年夏天之後,會改版,屆時應該就不限用 IE 瀏覽器了。
    由 Microsoft Update Catalog 網站下載 KB3125574
    由 Microsoft Update Catalog 網站下載 KB3125574
  4. 下載 Windows 7 與 Windows Server 2008 專屬的 2015 年 4 月服務堆疊更新 (KB3020369),一樣儲存在 D:\Rollup 目錄
  5. 由 Windows 7 with SP1 ISO 檔,取得映像檔的版本資料,以便找到要打包的映像檔之索引值為何,指令如下:
    dism /Get-WIMInfo /WimFile:G:\sources\install.wim
    找到要打包的映像檔之索引值為何
    找到要打包的映像檔之索引值為何
  6. 建立要掛載的目錄,在此為 D:\Win7PostSP1
    md D:\Win7PostSP1
  7. 掛載第 3 個 Windows 7 Pro 索引映像檔(如果每個映像檔都要加入更新程式的話,請重複此步驟到最後 1 個步驟),會要一些時間
    dism /Mount-WIM /WimFile:G:\sources\install.wim /Index:3 /MountDir:D:\Win7PostSP1
    掛載映像檔
    掛載映像檔
  8. 先將 2015 年 4 月服務堆疊更新 (KB3020369) 加入到映像檔裡
    dism /Image:D:\Win7PostSP1 /Add-Package /PackagePath:D:\Rollup\Windows6.1-KB3020369-x64.msu
    加入 KB3020369 到映像檔裡
    加入 KB3020369 到映像檔裡
  9. 再加入便利彙總套件 KB3125574,會需要較久的時間:
    dism /Image:D:\Win7PostSP1 /Add-Package /PackagePath:"D:\Rollup\Update for Windows 7 for x64-based Systems (KB3125574)"
    加入便利彙總套件 KB3125574
    加入便利彙總套件 KB3125574
  10. 加入目前最新的 Windows 7 更新彙總套件,現在只有 2016 年 6 月更新彙總套件 KB3161608:
    dism /Image:D:\Win7PostSP1 /Add-Package /PackagePath:D:\Rollup\Windows6.1-KB3161608-x64.msu
    我是從 Microsoft 下載中心直接下載,所以檔名比較短,若是由 Microsoft Update Catalog 網站下載,還會包含子目錄,且檔名比較長,所以請自行把指令修改成您實際環境的狀況。
  11. 順便把 IE11 也打包進去,先下載 Windows 7 專用的 IE11,解開到 D:\IE11:
    IE11-Windows6.1-x64-zh-tw.exe /x:D:\IE11
  12. 下載 6 個安裝 IE11 必備的更新程式,並儲存在 D:\IE11Req:
    1. KB2670838
    2. KB2533623
    3. KB2729094
    4. KB2731771
    5. KB2786081
    6. KB2834140
  13. 直接指向目錄 IE11Req,就不用逐一指定要把那個更新檔加入映像檔:
    dism /Image:D:\Win7PostSP1 /Add-Package /PackagePath:D:\IE11Req
    加入 IE11 必要的更新
    加入 IE11 必要的更新
  14. 完成 IE11 必要更新的程式之後,再加入先前解開的 IE11:
    dism /Image:D:\Win7PostSP1 /Add-Package /PackagePath:D:\IE11
    執行上面這個指令,一定會出現錯誤,無須理會,因為 IE_SUPPORT_amd64_zh-TW.CAB 在步驟 6. 的掛載目錄裡,要存取位於 Windows\System32\config 目錄中的特定檔案,權限不足。
    加入先前解開的 IE11
    加入先前解開的 IE11
  15. 不要忘記再加入 IE11 的累積安全性更新,目前最新的是 2016 年 6 月 14 日,可由 Microsoft Security Bulletin MS16-063 知道,要下載 Windows 7 SP1 64 位元的更新是:KB3160005:Internet Explorer 11 積存安全性更新 (適用於 x64 系統的 Windows 7),加入映像檔的指令為:
    dism /Image:D:\Win7PostSP1 /Add-Package /PackagePath:D:\IE11CU
  16. 寫回並更新映像檔,然後卸除掛載的目錄
    dism /Unmount-WIM /MountDir:D:\Win7PostSP1 /commit
如果要把映像檔變成 ISO 檔,可使用 Windows 評定及部署套件 (Windows ADK) 裡的 oscdimg.exe,指令如下:
oscdimg -bootdata:2#p0,e,bEtfsboot.com#pEF,e,bEfisys.bin -u1 -udfver102 -o -lAlexWin7SP2  G: D:\Win7PostSP1.iso

oscdimg 是 Windows 評定及部署套件 (Windows ADK) 裡的一個工具
oscdimg 是 Windows 評定及部署套件 (Windows ADK) 裡的一個工具
使用 oscdimg 建立同時適用 BIOS 與 UEFI 的可開機 ISO 檔
使用 oscdimg 建立同時適用 BIOS 與 UEFI 的可開機 ISO 檔
或使用其他 GUI 工具,例如:要錢的 UltraIOSDaemon Tools

下圖是實際使用 Windows 7 Ultimate 安裝,看到相關的更新:
實機安裝後,看到相關的更新
實機安裝後,看到相關的更新

請注意
  1. 如果您的 Windows 7 ISO 是沒有包含 SP1,就需要先把 SP1 (KB976932) 加入到映像檔裡(懶得再寫一篇文章了,請自行參考國外論壇的討論),然後再上面的步驟操作即可。
  2. 通常,美東時間每個月第 2 個週二下午 6 點(臺灣時間週三早上 9 點)發佈更新。
參考資料:

2 則留言: