2015年5月19日 星期二

製作Windows 7自動安裝光碟

  • 準備項目:
  • 將win7原版光碟內容複製到硬碟的某個目錄(以c:\win7為例), 確定sources\install.wim是可讀寫屬性
  • 安裝WAIK(X86:wAIKX86.msi, X64:wAIKAMD64.msi)
  • Windows系統映像管理員->檔案->新建回應檔案, WAIK要求開啟windows映像時指向c:\win7\sources\install.wim
    • 左下角Windows映像視窗中挑選components右鍵加入至中間回應檔案視窗, 大部分設定都在1.Windows PE與7.oobeSystem中
      • 1.WindowsvPE 
        • Microsoft-Windows-International-Core-WinPE
          • InputLocale=zh-TW
          • Layered Driver=1
          • SystemLocale=zh-TW
          • UILanguage=zh-TW
          • UILanguageFallback=zh-TW
          • UserLocale=zh-TW
        • Microsoft-Windows-International-Core-WinPE\SetupUILanguage
          • UILanguage=zh-TW
          • WillShowUI=OnError
        • Microsoft-Windows-Setup
          • WillShowUI=OnError
          • EnableFirewall=true
          • EnableNetwork=true
          • Restart=Restart
          • UseConfigurationSet=true
        • Microsoft-Windows-Setup\DiskConfiguration
          • WillShowUI=OnError
        • Microsoft-Windows-Setup\DiskConfiguration\Disk
          • DiskID=0
          • WillWipeDisk=true
        • Microsoft-Windows-Setup\DiskConfiguration\Disk\CreatePartitions\CreatePartition
          • Extend=true
          • Order=1
          • Size=XXXX(Optional if Extend is true)
          • Type=Primary
        • Microsoft-Windows-Setup\DiskConfiguration\Disk\ModifyPartitions\ModifyPartition
          • Active=true
          • Format=NTFS
          • Label=System
          • Letter=C
          • Order=1
          • PartitionID=1
        • #備註: CreatePartition與ModifyPartition要互相搭配,可以看作一個是建立分割區,另一個負責格式化,以上範例會將整顆硬碟的空間分給第一個partition。
        • #備註: CreatePartition中的Extend表示使用剩餘磁碟空間,因此當需要分割為兩個以上分割區時,第一個CreatePartition的Extend設為false,要指定Size(MB),第二個CreatePartition中的Extend設為true,Size保持空白
        • #備註: ModifyPartition跟著CreatePartition跑,有幾個CreatePartition就有幾個ModifyPartition,重點在於開機分割區的Active要設為true,指定格式為NTFS,另外Order與Createpartition同步,PartitionID要指向對應的CreatePartition
        • Microsoft-Windows-Setup\ImageInstall\OSImage
          • InstallToAvailablePartition=false
          • WillShowUI=OnError
        • Microsoft-Windows-Setup\ImageInstall\OSImage\InstallTo
          • DiskID=0
          • PartitionID=1
        • Microsoft-Windows-Setup\UserData
          • AcceptEula=true
          • FullName=w7usr
          • Orgnize=N/A
        • Microsoft-Windows-Setup\UserData\ProductKey
          • Key=XXXXXX
          • #備註:試過在此輸入Key會導致自動安裝失敗,紀錄上顯示為不合法的金鑰
          • WillShowUI=OnError
      • 7.oobeSystem
        • Microsoft-Windows-International-Core
          • InputLocale=zh-TW
          • SystemLocale=zh-TW
          • UILanguage=zh-TW
          • UILanguageFallback=zh-TW
          • UserLocale=zh-TW
        • Microsoft-Windows-Shell-Setup
          • BluetoothTaskbarIconEnabled=false
          • DisableAutoDaylightTimeSet=true
          • DoNotCleanTaskbar=false
          • ShowWindowsLive=false
          • TimeZone=Taipei Standard Time
        • Microsoft-Windows-Shell-Setup\FirstLogonCommands\SynchronousCommand
          • CommandLinux=%SYSTEMDRIVE%\7-zip_X32\inst_7z920.cmd
          • #備註:放這的安裝檔造做成靜默安裝,用cmd檔包起來的話,裡面的路徑要寫成絕對路徑,cmd檔範例在文章最底部
          • Order=1
        • Microsoft-Windows-Shell-Setup\OOBE
          • HideEULAPage=true
          • NetworkLocation=Work
          • ProtecYourPC=3
        • Microsoft-Windows-Shell-Setup\UserAccounts\AdministratorPassword
          • Value=XXXXXXXXXXX
          • #備註:可直接輸入Administrator帳號的密碼
        • Microsoft-Windows-Shell-Setup\UserAccounts\LocalAccounts\LocalAccount
          • DisplayName=XXXXX
          • Group=Administrators
          • Name=w7usr
          • #備註:應答檔中新增一個或多個使用者帳號,可避免自動安裝停在新增使用者處
        • Microsoft-Windows-Shell-Setup\UserAccounts\LocalAccounts\LocalAccount\Password
          • Value=XXXXXXXXXX
  • 工具->驗證回應檔案, 若下方訊息視窗出現"沒有警告或錯誤"之後就可以儲存至c:\win7下,檔名固定為autounattend.xml
  • 將C:\Program Files\Windows AIK\Tools\PETools\x86\boot\etfsboot.com 複製到 C:\
  • 將C:\Program Files\Windows AIK\Tools\x86\oscdimg.exe 複製到C:\
  • 打開cmd到C:\
  • oscdimg.exe -bC:\etfsboot.com -h -m -nt -ois C:\win7 C:\win732.iso , 結束後win732.iso即可燒錄為自動安裝光碟
    • oscdimg.exe參數
      • -b: 將開機檔加到光碟映像中,參數與路徑間不須留空格
      • -h: 連帶隱藏目錄及檔案一併封裝
      • -m: 允許完成的ISO檔超過一片光碟片大小
      • -nt: 增強長檔名及NT 3.51的相容性
      • -o: 來源資料夾有相同檔案時僅加入一次,減少iso檔的大小
      • -oi: 忽略比對來源資料夾中已經壓縮過而不能再度壓縮的檔案,節省封裝時間
      • -os: 顯示合併過程
      • 以上三個參數可以合併為-ois

      inst_7z920.cmd範例
      (注意7-zip的x86與x64版的靜
      默安裝參數不同,X64板的參數/q INSTALLDIR="C:\Program Files\7-Zip")

      @echo off
      @echo Installing 7zip
      %SYSTEMDRIVE%\7-zip_X32\7z920.exe /S /D=C:\Program Files\7-zip
      SETLOCAL
      SET SC=HKLM\SOFTWARE\Classes
      SET Extn=001 7z arj bz2 cab chm cpio deb gz iso lzh nsis rar rpm tar z
      FOR %%j IN (%Extn%) DO >nul (
      REG ADD %SC%\.%%j /VE /D "7-Zip.%%j" /F
      REG ADD %SC%\7-Zip.%%j /VE /D "7z Archive" /F
      REG ADD %SC%\7-Zip.%%j\DefaultIcon /VE /D "\"%PROGRAMFILES%\7-Zip\Formats\%%j.dll\"" /F
      REG ADD %SC%\7-Zip.%%j\shell\open\command /VE /D "\"%PROGRAMFILES%\7-Zip\7zFM.exe\" \"%%1\"" /F
      )
      REG ADD >nul %SC%\7-Zip.001\DefaultIcon /VE /D "\"%PROGRAMFILES%\7-Zip\Formats\split.dll\"" /F
      ENDLOCAL
      @echo Done!