新增 Telegram 首次登入自動安裝與 Ventoy menu_tip 提示;ProductKey 改用 Win11/10 Pro GVLK
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
46
DEPLOY.md
46
DEPLOY.md
@@ -33,7 +33,7 @@ USB 根目錄兩個 ISO:
|
||||
|
||||
## USB 上的 `ventoy.json`
|
||||
|
||||
**與 repo 根目錄的 `ventoy.json` 不同** —— repo 版本保留通用示範路徑 `/Win11.iso`,USB 版本則綁定本機這兩個 ISO 的實際檔名:
|
||||
**與 repo 根目錄的 `ventoy.json` 不同** —— repo 版本保留通用示範路徑 `/Win11.iso`,USB 版本則綁定本機這兩個 ISO 的實際檔名,並帶了 `menu_tip` 讓 Ventoy 選單上顯示每個 ISO 會做什麼:
|
||||
|
||||
```json
|
||||
{
|
||||
@@ -46,13 +46,29 @@ USB 根目錄兩個 ISO:
|
||||
"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 上一字不差**(含空格、底線、版本號)。
|
||||
- `image` 路徑以 `/` 開頭,相對 USB 根目錄,**完整檔名必須跟 USB 上一字不差**(含空格、底線、版本號)。`menu_tip.tips[].image` 也要跟著同步,否則光標移到 ISO 上不會跳 tip。
|
||||
- 兩個 ISO 共用同一份 `unattend.xml`;該 XML 目前以 UEFI+GPT 全碟清除方式部署,兩個版本皆適用。
|
||||
- 若日後只想其中一個 ISO 走自動安裝、另一個保留互動安裝,刪掉對應的物件即可;Ventoy 找不到對應 `image` 時會走一般安裝流程。
|
||||
- 若日後只想其中一個 ISO 走自動安裝、另一個保留互動安裝,刪掉 `auto_install` 對應的物件即可;Ventoy 找不到對應 `image` 時會走一般安裝流程(`menu_tip` 那條保留沒關係,不跳 auto install)。
|
||||
- `menu_tip.tip` 是**單行**的;[Ventoy 文件](https://www.ventoy.net/en/plugin_menutip.html)明確說不支援 `\n`,換行會被一律忽略。要多行提示只能靠縮寫或另加 plugin(如 `menu_alias`)。
|
||||
|
||||
---
|
||||
|
||||
@@ -91,6 +107,27 @@ cat /Volumes/Ventoy/ventoy/ventoy.json
|
||||
|
||||
---
|
||||
|
||||
## 部署後動作(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 預設值,下列情況會失敗,改用前要先處理:
|
||||
@@ -99,3 +136,4 @@ cat /Volumes/Ventoy/ventoy/ventoy.json
|
||||
- **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 會失敗但不影響整個流程走完。
|
||||
|
||||
@@ -62,6 +62,8 @@ cp unattend.xml /Volumes/Ventoy/ventoy/script/unattend.xml
|
||||
|
||||
**多個 ISO / 多套範本**:`ventoy.json` 的 `auto_install` 是陣列,每個 ISO 一條目;`template` 也可以是陣列,開機時 Ventoy 會顯示選單讓你挑。
|
||||
|
||||
**選單上的提示文字**:`ventoy.json` 可加一個 `menu_tip` 區塊,光標停在某個 ISO 時,畫面下方會顯示該 ISO 對應的一行說明([Ventoy 文件](https://www.ventoy.net/en/plugin_menutip.html))。本 repo 的 `ventoy.json` 範例已示範單一 tip;實機部署版本(見 `DEPLOY.md`)會對每個 ISO 寫明「自動安裝流程+會清碟+預設帳密」作為開機前最後提醒。`tip` 是單行的,不支援 `\n`。
|
||||
|
||||
驗證:USB 插上目標機開機 → Ventoy 選單選 ISO → 如果 `ventoy.json` 寫對,畫面會出現「Select Auto Install Template」→ 選 `unattend.xml`。
|
||||
|
||||
---
|
||||
|
||||
@@ -56,7 +56,9 @@ Windows Setup 在不同階段套用不同 `<settings pass="...">`:
|
||||
- `FirstLogonCommands` — 按 `Order` 依序執行:
|
||||
1. `powershell.exe -ExecutionPolicy Bypass -File C:\Scripts\Setup.ps1`
|
||||
2. `cmd.exe /c net accounts /maxpwage:unlimited`(密碼永不過期)
|
||||
3. `shutdown /r /t 5`(重開機)
|
||||
3. `Rename-Computer` 改主機名成 `PC-XXXXX`(重開後生效)
|
||||
4. 下載 `https://telegram.org/dl/desktop/win64` 並以 `/VERYSILENT /SUPPRESSMSGBOXES /NORESTART` 靜默安裝 Telegram Desktop(per-user,裝到 Admin 帳號下)
|
||||
5. `shutdown /r /t 5`(重開機)
|
||||
|
||||
---
|
||||
|
||||
@@ -66,9 +68,9 @@ Windows Setup 在不同階段套用不同 `<settings pass="...">`:
|
||||
|---|---|
|
||||
| `processorArchitecture` | x64 用 `amd64`、ARM64 用 `arm64` |
|
||||
| `publicKeyToken` | 微軟元件簽章,固定 `31bf3856ad364e35` |
|
||||
| `ProductKey` | 零售/OEM 填正式序號;KMS/大量授權可用 Generic Volume License Key,或留空 |
|
||||
| `ProductKey` | 目前填的是 **Win11/10 專業版 GVLK**(`W269N-WFGWX-YVC9B-4J6C9-T83GX`,[微軟文件](https://learn.microsoft.com/zh-tw/windows-server/get-started/kms-client-activation-keys)),用來選版本+略過序號畫面。GVLK 只在 KMS 主機環境下才會真正啟用,獨立機器會進 30 天寬限期。其他版本/零售序號直接換這串即可 |
|
||||
| `PlainText` | `true` 用明碼、`false` 用 Base64(SIM 會自動產生) |
|
||||
| `%RAND:5%` | 內建變數,產生 5 位隨機數字避免主機名衝突 |
|
||||
| `ComputerName` | 只接受字面名稱、`*`(自動產生如 `DESKTOP-ABC123D`)或空值。**不支援 `%RAND:N%`**——那是 MDT/SCCM task-sequence 變數,直接放進 `unattend.xml` 會被當字面字串送進 NetBIOS 驗證而失敗。本檔的做法是 `<ComputerName>*</ComputerName>` 加 `FirstLogonCommands` 裡的 `Rename-Computer` 改成 `PC-XXXXX`,重開後生效 |
|
||||
| `WillShowUI` | `OnError` / `Always` / `Never` |
|
||||
| `FirstLogonCommands` | 需搭配 `AutoLogon` 才會觸發;按 `Order` 同步執行 |
|
||||
|
||||
|
||||
10
SUMMARY.md
10
SUMMARY.md
@@ -44,13 +44,17 @@ XML 能做的事有上限。超過這條線(裝軟體、設 Registry、拉 Git
|
||||
`FirstLogonCommands` 就是交棒點:
|
||||
|
||||
```
|
||||
Order 1 → Setup.ps1 (所有「後續設定」都塞這裡)
|
||||
Order 2 → net accounts (一行搞定的雜事直接 cmd)
|
||||
Order 3 → shutdown /r (重開機收尾)
|
||||
Order 1 → Setup.ps1 (所有「後續設定」都塞這裡)
|
||||
Order 2 → net accounts (一行搞定的雜事直接 cmd)
|
||||
Order 3 → Rename-Computer (主機名改 PC-XXXXX,重開後生效)
|
||||
Order 4 → Telegram 靜默安裝 (下載 tsetup.exe + /VERYSILENT)
|
||||
Order 5 → shutdown /r (重開機收尾,讓 rename 生效)
|
||||
```
|
||||
|
||||
這讓 `unattend.xml` 保持「只負責 Windows 本身的安裝」,其他事情外包給腳本。職責分離之後,改軟體清單不需要動 XML,改部署流程也不需要動 Setup 邏輯。
|
||||
|
||||
> Telegram 這條是「交棒到腳本」這條原則的例外:**單一套件、需求穩定**的情況下,直接在 `FirstLogonCommands` 裡下載安裝比起硬塞進 `Setup.ps1` 單純。一旦要裝的東西變成清單(3+ 個套件、要版本鎖定、要錯誤處理),就該整批移進 `Setup.ps1` 或改用 winget/choco。
|
||||
|
||||
---
|
||||
|
||||
## 為什麼分成三個 Pass
|
||||
|
||||
13
unattend.xml
13
unattend.xml
@@ -62,10 +62,13 @@
|
||||
</OSImage>
|
||||
</ImageInstall>
|
||||
|
||||
<!-- 產品序號(若用 KMS/批次授權可留空或填通用金鑰)-->
|
||||
<!-- 產品序號:Windows 11/10 專業版 GVLK(KMS 用戶端一般大量授權金鑰)。
|
||||
來源:https://learn.microsoft.com/zh-tw/windows-server/get-started/kms-client-activation-keys
|
||||
作用:用來選擇 ISO 內的版本(Pro),並讓 Setup 略過「輸入序號」畫面。
|
||||
注意:這不是零售金鑰,只有連到 KMS 主機才會真正啟用;獨立機器會進 30 天寬限期再出現浮水印。 -->
|
||||
<UserData>
|
||||
<ProductKey>
|
||||
<Key>XXXXX-XXXXX-XXXXX-XXXXX-XXXXX</Key>
|
||||
<Key>W269N-WFGWX-YVC9B-4J6C9-T83GX</Key>
|
||||
<WillShowUI>OnError</WillShowUI>
|
||||
</ProductKey>
|
||||
<AcceptEula>true</AcceptEula>
|
||||
@@ -165,6 +168,12 @@
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<Order>4</Order>
|
||||
<CommandLine>powershell.exe -NoProfile -ExecutionPolicy Bypass -Command "$ProgressPreference='SilentlyContinue'; $p=Join-Path $env:TEMP 'tsetup.exe'; Invoke-WebRequest -UseBasicParsing -Uri 'https://telegram.org/dl/desktop/win64' -OutFile $p; Start-Process -FilePath $p -ArgumentList '/VERYSILENT','/SUPPRESSMSGBOXES','/NORESTART' -Wait"</CommandLine>
|
||||
<Description>下載並靜默安裝 Telegram Desktop</Description>
|
||||
<RequiresUserInput>false</RequiresUserInput>
|
||||
</SynchronousCommand>
|
||||
<SynchronousCommand wcm:action="add">
|
||||
<Order>5</Order>
|
||||
<CommandLine>shutdown /r /t 5</CommandLine>
|
||||
<Description>完成後重開機</Description>
|
||||
</SynchronousCommand>
|
||||
|
||||
13
ventoy.json
13
ventoy.json
@@ -4,5 +4,16 @@
|
||||
"image": "/Win11.iso",
|
||||
"template": "/ventoy/script/unattend.xml"
|
||||
}
|
||||
]
|
||||
],
|
||||
"menu_tip": {
|
||||
"left": "10%",
|
||||
"top": "81%",
|
||||
"color": "white",
|
||||
"tips": [
|
||||
{
|
||||
"image": "/Win11.iso",
|
||||
"tip": "Win11 自動安裝|清碟→Admin/P@ssw0rd!→裝 Telegram→重開(UEFI+GPT,會清空目標碟)"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user