Files
windows-unattend/DEPLOY.md

6.1 KiB
Raw Blame History

DEPLOY — 本機 Ventoy USB 部署紀錄

這份文件記錄本機 Ventoy USB/Volumes/Ventoy)上 unattend.xmlventoy.json 的實際部署方式,供下次換機、換 ISO、或刷新 USB 內容時照著做。

概念與疑難排解請看 QUICKSTART.md;這份只寫「這顆 USB 目前的樣子」和「怎麼重建它」。


目前 USB 內容

掛載點:/Volumes/Ventoy

USB 根目錄兩個 ISO

檔名 用途
Windows 11_25H2_Chinese_Traditional_x64v1.iso Win11 25H2 繁中 x64
Windows 10_22H2_Chinese_Traditional_x64v1.iso Win10 22H2 繁中 x64

注入檔案佈局:

/Volumes/Ventoy/
├── Windows 11_25H2_Chinese_Traditional_x64v1.iso
├── Windows 10_22H2_Chinese_Traditional_x64v1.iso
└── ventoy/
    ├── ventoy.json                  ← 對應兩個 ISO都指向同一份 template
    └── script/
        └── unattend.xml             ← 與 repo 根目錄的 unattend.xml 相同

USB 上的 ventoy.json

與 repo 根目錄的 ventoy.json 不同 —— repo 版本保留通用示範路徑 /Win11.isoUSB 版本則綁定本機這兩個 ISO 的實際檔名,並帶了 menu_tip 讓 Ventoy 選單上顯示每個 ISO 會做什麼:

{
    "auto_install": [
        {
            "image": "/Windows 11_25H2_Chinese_Traditional_x64v1.iso",
            "template": "/ventoy/script/unattend.xml"
        },
        {
            "image": "/Windows 10_22H2_Chinese_Traditional_x64v1.iso",
            "template": "/ventoy/script/unattend.xml"
        }
    ],
    "menu_tip": {
        "left": "10%",
        "top": "81%",
        "color": "white",
        "tips": [
            {
                "image": "/Windows 11_25H2_Chinese_Traditional_x64v1.iso",
                "tip": "Win11 25H2 自動安裝清碟→Admin/P@ssw0rd!→裝 Telegram→重開UEFI+GPT會清空目標碟"
            },
            {
                "image": "/Windows 10_22H2_Chinese_Traditional_x64v1.iso",
                "tip": "Win10 22H2 自動安裝清碟→Admin/P@ssw0rd!→裝 Telegram→重開UEFI+GPT會清空目標碟"
            }
        ]
    }
}
  • image 路徑以 / 開頭,相對 USB 根目錄,完整檔名必須跟 USB 上一字不差(含空格、底線、版本號)。menu_tip.tips[].image 也要跟著同步,否則光標移到 ISO 上不會跳 tip。
  • 兩個 ISO 共用同一份 unattend.xml;該 XML 目前以 UEFI+GPT 全碟清除方式部署,兩個版本皆適用。
  • 若日後只想其中一個 ISO 走自動安裝、另一個保留互動安裝,刪掉 auto_install 對應的物件即可Ventoy 找不到對應 image 時會走一般安裝流程(menu_tip 那條保留沒關係,不跳 auto install
  • menu_tip.tip單行的;Ventoy 文件明確說不支援 \n,換行會被一律忽略。要多行提示只能靠縮寫或另加 pluginmenu_alias)。

重新部署步驟macOS

插入 Ventoy USB 後:

# 從 repo 根目錄執行
mkdir -p /Volumes/Ventoy/ventoy/script
cp unattend.xml /Volumes/Ventoy/ventoy/script/unattend.xml

# 寫 ventoy.json見上一節內容或直接手編
#   注意image 檔名必須跟 USB 上的 ISO 檔名完全一致

# 清掉 macOS 複製過程產生的 ._ AppleDouble metadata
dot_clean /Volumes/Ventoy/ventoy

驗證:

ls /Volumes/Ventoy/ventoy/ /Volumes/Ventoy/ventoy/script/
diff unattend.xml /Volumes/Ventoy/ventoy/script/unattend.xml   # 應無輸出
cat /Volumes/Ventoy/ventoy/ventoy.json

換 ISO 時要改什麼

  1. 把新 ISO 丟到 USB 根目錄。
  2. 編輯 /Volumes/Ventoy/ventoy/ventoy.json,把對應條目的 image 換成新檔名(或新增一條)。
  3. 不用/Volumes/Ventoy/ventoy/script/unattend.xml,除非要改 Windows 版本特有設定。
  4. 若 repo 裡的 unattend.xml 有更新,重跑一次 cpdot_clean 即可。

部署後動作FirstLogonCommands 做了什麼)

目標機首次登入 Admin 帳號時,下列動作會按 Order 依序執行(全部跑完才 reboot

Order 動作 需要網路?
1 powershell -File C:\Scripts\Setup.ps1 看腳本內容
2 net accounts /maxpwage:unlimited(密碼永不過期)
3 Rename-Computer 把主機名改成 PC-XXXXX(重開後生效)
4 下載 https://telegram.org/dl/desktop/win64 → 靜默安裝(/VERYSILENT /SUPPRESSMSGBOXES /NORESTART
5 shutdown /r /t 5 重開機

Telegram 這條的注意事項:

  • 要有網路OOBE 裡 SkipMachineOOBE=true 跳過了網路設定精靈,所以目標機必須有 Ethernet+DHCP或本身已記住 Wi-Fi。網路不通時 Invoke-WebRequest 會失敗,但不會擋到 Order 5 的 reboot只會讓 Telegram 沒裝成。
  • per-user 安裝Telegram 安裝程式預設裝到 Admin 這個帳號底下,其他帳號看不到。要全機安裝就在 ArgumentList'/ALLUSERS'
  • 抓的是 latest 版:每次部署抓當下最新版。要鎖版本改用 https://updates.tdesktop.com/tsetup/tsetup-x64.X.Y.Z.exe 直鏈。
  • 順序不能搬到 reboot 後shutdown /r /t 5 只是排程重開機、立即回傳,若放在 Telegram 前面,下載安裝會被 5 秒後的關機砍掉。

本次部署已知限制

沿用 repo 預設值,下列情況會失敗,改用前要先處理:

  • 目標機若是 BIOS/MBR<DiskConfiguration> 目前寫死 UEFI+GPT分割階段會報錯。
  • ARM64 機器:所有 <component>processorArchitecture="amd64" 要改成 arm64
  • C:\Scripts\Setup.ps1 未提供FirstLogonCommands 會在首次登入時報「找不到檔案」。解法:在 FirstLogonCommands 前段加一條從 USB 複製的指令,或另外烘進 image或乾脆刪掉 Order=1 那條 SynchronousCommand
  • 密碼是明碼<PlainText>true</PlainText>):僅適合測試用途;正式部署請用 Windows SIM 產 Base64。
  • Telegram 安裝需要外網目標機沒網路的話Order 4 會失敗但不影響整個流程走完。