docs(web): update spec page for v0.6 reliability features
Reflect all changes from d30767e in web documentation:
- Atera /qn -> /qb for MFA window support
- EditionID-based GVLK matching instead of OS caption
- New architecture rows: watchdog, reboot loop protection,
atomic state, email retry, hive unload retry, resume fix
- Corrected Windows Update reboot cycle description (exit 9)
- Winget parallel job timeout documentation
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
d30767ef8b
commit
3c2e7865a8
1 changed files with 20 additions and 11 deletions
|
|
@ -520,8 +520,8 @@
|
|||
|
||||
<h1>Specifikace & anotace</h1>
|
||||
<div class="meta">
|
||||
<span>Verze: 0.5</span>
|
||||
<span>Datum: 2026-04-21</span>
|
||||
<span>Verze: 0.6</span>
|
||||
<span>Datum: 2026-04-28</span>
|
||||
<span><a href="https://git.xetup.x9.cz/x9/xetup">x9/xetup</a></span>
|
||||
<span>Status: aktivni vyvoj</span>
|
||||
</div>
|
||||
|
|
@ -599,9 +599,10 @@
|
|||
<tr class="flag-done"><td>7-Zip (<code>7zip.7zip</code>)</td><td>OK</td></tr>
|
||||
<tr class="flag-done"><td>Adobe Acrobat Reader 64-bit (<code>Adobe.Acrobat.Reader.64-bit</code>)</td><td>OK</td></tr>
|
||||
<tr class="flag-done"><td>OpenVPN Connect (<code>OpenVPNTechnologies.OpenVPNConnect</code>)</td><td>OK</td></tr>
|
||||
<tr class="flag-done"><td>Atera Agent install</td><td>Invoke-WebRequest + <code>msiexec /i /qn</code></td></tr>
|
||||
<tr class="flag-done"><td>Adobe PDF default: .pdf -> AcroRd32 po instalaci</td><td>OK – UCPD stop/start kolem zápisu asociace</td></tr>
|
||||
<tr class="flag-done"><td>UCPD.sys (kernel driver, od Feb 2024) blokuje UserChoice</td><td>Reseno: Stop-Service ucpd → HKCR zapis → Start-Service ucpd</td></tr>
|
||||
<tr class="flag-done"><td>Atera Agent install</td><td>Invoke-WebRequest + <code>msiexec /i /qb</code> – /qb umozni zobrazeni MFA okna</td></tr>
|
||||
<tr class="flag-done"><td>Adobe PDF default: .pdf -> AcroRd32 po instalaci</td><td>OK – UCPD stop/start kolem zapisu asociace</td></tr>
|
||||
<tr class="flag-done"><td>UCPD.sys (kernel driver, od Feb 2024) blokuje UserChoice</td><td>Stop-Service ucpd + 2s sleep + overeni zastaveni pred HKCR zapisem</td></tr>
|
||||
<tr class="flag-done"><td>Winget parallel joby: timeout 600s + kill zavislych</td><td>Wait-Job -Timeout 600; po vyprseni Kill + Remove zavislych jobu</td></tr>
|
||||
<tr class="flag-done"><td>Winget cesta explicitne predavana do parallel jobu</td><td>Opraveno – Start-Job nezdedi PATH; winget.exe fullpath preda jako argument. Exit 3010 (success+reboot) nyni vyhodnocen jako OK.</td></tr>
|
||||
</table>
|
||||
<div class="note">
|
||||
|
|
@ -728,7 +729,7 @@
|
|||
<table class="items">
|
||||
<tr class="flag-done"><td>OA3 BIOS/UEFI klic – kontrola embedded key</td><td>WMI: SoftwareLicensingService.OA3xOriginalProductKey</td></tr>
|
||||
<tr class="flag-done"><td>Klic z config.json (<code>activation.productKey</code>)</td><td>OK – priorita nad OA3 a GVLK</td></tr>
|
||||
<tr class="flag-done"><td>Fallback na GVLK (KMS client key) dle edice OS</td><td>OK</td></tr>
|
||||
<tr class="flag-done"><td>Fallback na GVLK (KMS client key) dle EditionID</td><td>Registry <code>EditionID</code> (nelokalizovany) misto Win32_OperatingSystem.Caption</td></tr>
|
||||
<tr class="flag-done"><td>Volitelny KMS server (<code>activation.kmsServer</code>)</td><td>OK</td></tr>
|
||||
<tr class="flag-done"><td>Preskocit pokud jiz aktivovano</td><td>OK</td></tr>
|
||||
<tr class="flag-open"><td>Typ klice: MAK vs KMS vs retail?</td><td>Zavisi na klientovi – otevrena otazka</td></tr>
|
||||
|
|
@ -821,13 +822,13 @@
|
|||
<table class="items">
|
||||
<tr class="flag-done"><td>Instalace NuGet providera + PSWindowsUpdate modulu ze PSGallery</td><td>Install-PackageProvider + Install-Module PSWindowsUpdate -Force</td></tr>
|
||||
<tr class="flag-done"><td>Prvni pruchod aktualizaci (bez rebootu)</td><td>Install-WindowsUpdate -AcceptAll -IgnoreReboot</td></tr>
|
||||
<tr class="flag-done"><td>X9-WindowsUpdate scheduled task – pokracovani po restartu</td><td>Bezi pri kazdem logonu jako SYSTEM; po pruchodu bez novych update se task sam smaze</td></tr>
|
||||
<tr class="flag-done"><td>Reboot cyklus (exit 9) – pokracovani pres xetup resume</td><td>Exit 9 = reboot needed; xetup ulozi stav, nastavi autologon + X9-Resume task, restartuje</td></tr>
|
||||
<tr class="flag-done"><td>Automaticky restart po skonceni deploymetu (GUI odpocet)</td><td>xetup.exe zobrazi 60s odpocet + tlacitka "Restartovat ted" / "Zrusit restart"</td></tr>
|
||||
</table>
|
||||
<div class="note">
|
||||
Windows Update typicky vyzaduje vice restartovacich kolu. Prvni pruchod probehne behem deploymetu,
|
||||
dalsi kola zaridti scheduled task, ktery se po dokonceni sam odregistruje.<br><br>
|
||||
<strong>Pozor:</strong> Prvni restart spusti jak Windows Update task, tak Dell firmware staging (krok 11).
|
||||
Windows Update typicky vyzaduje vice restartovacich kolu. Kazdy pruchod skonci exit 9 (dalsi updaty) nebo exit 0 (hotovo).
|
||||
xetup resume cyklus automaticky opakuje az do uplne aktualizace. Max 5 rebootu na krok (ochrana proti smycce).<br><br>
|
||||
<strong>Pozor:</strong> Prvni restart spusti jak Windows Update, tak Dell firmware staging (krok 11).
|
||||
</div>
|
||||
</div>
|
||||
<div class="step-footer">
|
||||
|
|
@ -881,6 +882,12 @@
|
|||
<tr class="flag-done"><td>Summary s odpoctem a automatickym restartem</td><td>Faze 3 – 60s odpocet, tlacitka "Restartovat ted" / "Zrusit restart"</td></tr>
|
||||
<tr class="flag-done"><td>UAC requireAdministrator (app.manifest + rsrc)</td><td>Windows vyzada elevaci pri spusteni; ComCtl32 v6 + DPI awareness</td></tr>
|
||||
<tr class="flag-done"><td>PowerShell okno skryte na pozadi</td><td>SysProcAttr.HideWindow = true; PS chyby filtrovane (At line:, CategoryInfo atd.)</td></tr>
|
||||
<tr class="flag-done"><td>Watchdog timer: 30 min ticho = kill skriptu</td><td>time.AfterFunc s Reset pri kazdem vystupu – zabiji zavisly PS proces</td></tr>
|
||||
<tr class="flag-done"><td>Reboot loop ochrana: max 5 pokusu na krok</td><td>RetryCounts v state.json; po 5 restartech krok oznacen ERROR a preskocen</td></tr>
|
||||
<tr class="flag-done"><td>Atomicky zapis state.json (write tmp + rename)</td><td>Prevence korupce pri vypadku napajeni behem zapisu</td></tr>
|
||||
<tr class="flag-done"><td>E-mail report: 3 pokusy + lokalni HTML fallback</td><td>Backoff 0/1/5s; vzdy ulozi <code>C:\X9\report.html</code> bez ohledu na SMTP</td></tr>
|
||||
<tr class="flag-done"><td>Hive unload retry (5 pokusu, GC pred kazdym)</td><td>Prevence "hive in use" chyby pri reg unload ntuser.dat</td></tr>
|
||||
<tr class="flag-done"><td>Resume fix: StepsByIDs nyni nastavuje Enabled=true</td><td>Opravena kriticka chyba – resume mode preskakoval vsechny kroky</td></tr>
|
||||
<tr class="flag-todo"><td>Self-update: stahnout novou verzi z xetup.x9.cz/dl</td><td>Overit hash pred spustenim</td></tr>
|
||||
<tr class="flag-future"><td>config.json: per-klient preset na USB</td><td>Jmeno PC prefix, SW seznam, klic – lezi vedle .exe</td></tr>
|
||||
</table>
|
||||
|
|
@ -888,7 +895,9 @@
|
|||
<strong>Struktura:</strong> <code>cmd/xetup/</code>, <code>internal/config/</code>, <code>internal/gui/</code>, <code>internal/runner/</code><br><br>
|
||||
<strong>Go zavislosti:</strong> github.com/lxn/walk (Win32 GUI), golang.org/x/sys<br><br>
|
||||
<strong>Build:</strong> <code>CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc GOOS=windows GOARCH=amd64 go build -ldflags="-s -w -H windowsgui" ./cmd/xetup/</code><br>
|
||||
CI (Forgejo Actions) sestavi a publikuje automaticky pri kazdem push na main.
|
||||
CI (Forgejo Actions) sestavi a publikuje automaticky pri kazdem push na main.<br><br>
|
||||
<strong>Spolehlivost (v0.6):</strong> Watchdog zabiji zavisle skripty po 30 min ticha. Reboot-loop ochrana omezi opakovani kazdeho kroku na 5 restartu.
|
||||
State file se zapisuje atomicky (tmp+rename). E-mail report se zkusi 3x s backoff a vzdy ulozi lokalni HTML kopii.
|
||||
</div>
|
||||
</div>
|
||||
<div class="step-footer">
|
||||
|
|
|
|||
Loading…
Reference in a new issue