From 5a121718d47ea93650b22b9ec4fb0034dc7282c1 Mon Sep 17 00:00:00 2001 From: Benoit LORAND Date: Mon, 19 Oct 2026 00:11:09 +0200 Subject: [PATCH] =?UTF-8?q?Le=20log=20est=20d=C3=A9sormais=20stock=C3=A9?= =?UTF-8?q?=20dans=20%temp%=20DeployCenter=20peut=20=C3=AAtre=20stock?= =?UTF-8?q?=C3=A9=20dans=20un=20partage=20en=20lecture=20seule=20D=C3=A9sa?= =?UTF-8?q?ctivation=20de=20l'hibernation=20via=20l'unattend=20D=C3=A9sact?= =?UTF-8?q?ivation=20de=20la=20mise=20en=20veille=20lorsque=20le=20pc=20es?= =?UTF-8?q?t=20sur=20secteur=20L'installation=20unattend=20emp=C3=AAche=20?= =?UTF-8?q?bitlocker=20de=20s'activer=20(pas=20de=20cl=C3=A9=20stock=C3=A9?= =?UTF-8?q?e=20en=20lieu=20s=C3=BBr=20hors=20domaine=20et=20azure=20en=20a?= =?UTF-8?q?utomatique).=20Cela=20n'emp=C3=AAche=20pas=20de=20l'activer=20e?= =?UTF-8?q?n=20connaissance=20de=20cause=20par=20la=20suite.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 +++- DeployCenter.ps1 | 3 +-- Logs/.gitignore | 5 ----- Modules/Logging.psm1 | 9 +++++---- README-en.md | 4 +++- README.md | 4 +++- Unattend/Templates/OEMInstallation.xml | 13 +++++++++++++ 7 files changed, 28 insertions(+), 14 deletions(-) delete mode 100644 Logs/.gitignore diff --git a/CHANGELOG.md b/CHANGELOG.md index fb8047f..e611604 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -51,7 +51,7 @@ powershell.exe -ExecutionPolicy Bypass -File .\DeployCenter.ps1 ` -ConfirmDiskErase -RestartWhenComplete -CopyLocally Sources,Drivers ``` -Pour laisser Windows gérer OOBE, remplacer les paramètres de profil et de nom d’hôte par `-UnattendProfileId OOBE`. La commande retourne le code de processus `0` en cas de succès et `1` si la préparation ou le déploiement échoue. Après une tentative d’installation, le journal complet est copié à la racine de `C:\`, en cas de succès comme d’échec ; l’original reste dans `Logs`. +Pour laisser Windows gérer OOBE, remplacer les paramètres de profil et de nom d’hôte par `-UnattendProfileId OOBE`. La commande retourne le code de processus `0` en cas de succès et `1` si la préparation ou le déploiement échoue. Après une tentative d’installation, le journal complet est copié à la racine de `C:\`, en cas de succès comme d’échec ; l’original reste dans `%TEMP%\DeployCenter` jusqu’au redémarrage de WinPE. Conserver à côté du script les ressources habituelles du projet (`Assets`, `uvnc`, `HardwareInfo.ps1`, etc.). Les dossiers `Modules` et `Themes` doivent rester à côté de `DeployCenter.ps1`. @@ -93,6 +93,8 @@ Pour produire `AdminPasswordBase64`, lancer `powershell.exe -ExecutionPolicy Byp ## Historique récent +- Les journaux de session sont maintenant créés sous `%TEMP%\DeployCenter` par `Logging.psm1`, afin que le dossier du dépôt puisse être en lecture seule. La copie finale du journal à la racine de `C:\` est conservée ; les deux manuels et le changelog le précisent. +- Le template Unattend `OEMInstallation.xml` définit `PreventDeviceEncryption=true` pour empêcher l’activation automatique du chiffrement de l’appareil par BitLocker. Il désactive aussi l’hibernation et la veille automatique sur secteur. Les deux manuels documentent ces réglages ; le parcours « Avec OOBE » reste sans fichier Unattend. - Correction des chemins d’images dans les deux README : le dépôt suit le dossier `Images/` avec une majuscule, nécessaire au rendu Gitea sensible à la casse ; l’espace du nom de fichier est encodé en `%20`. - Intégration des six captures de `Images/` dans `README.md` et `README-en.md`, aux étapes de sélection des sources, de progression et de fin du déploiement. - Traduction anglaise du manuel utilisateur dans `README-en.md`, avec conservation des commandes et identifiants de profils. diff --git a/DeployCenter.ps1 b/DeployCenter.ps1 index 2a2b308..8900b09 100644 --- a/DeployCenter.ps1 +++ b/DeployCenter.ps1 @@ -140,7 +140,6 @@ try { $script:AssetsRoot = Join-Path $script:DeployRoot "Assets" $script:LogoPath = Join-Path $script:AssetsRoot "logo.png" $script:LogoDarkPath = Join-Path $script:AssetsRoot "logo-dark.png" -$script:LogRoot = Join-Path $script:DeployRoot "Logs" # Network detection is centralized in Modules\\Network.psm1. $networkModulePath = Join-Path $PSScriptRoot "Modules\\Network.psm1" @@ -156,7 +155,7 @@ if (-not (Test-Path -LiteralPath $loggingModulePath -PathType Leaf)) { throw "Logging module not found: $loggingModulePath" } . ([scriptblock]::Create([System.IO.File]::ReadAllText($loggingModulePath))) -Initialize-DeployCenterLogging -LogRoot $script:LogRoot -IPv4 $script:DeployIPv4 +Initialize-DeployCenterLogging -IPv4 $script:DeployIPv4 # Keep the main script scope so Write-Log remains available to WinForms callbacks. $script:SourceLogAction = { param($Message, $Level, [bool]$SystemOutput = $false) diff --git a/Logs/.gitignore b/Logs/.gitignore deleted file mode 100644 index db56141..0000000 --- a/Logs/.gitignore +++ /dev/null @@ -1,5 +0,0 @@ -# Ignorer tous les fichiers de ce répertoire -* - -# Sauf celui-ci -!.gitignore \ No newline at end of file diff --git a/Modules/Logging.psm1 b/Modules/Logging.psm1 index 9a8f4c1..c51726a 100644 --- a/Modules/Logging.psm1 +++ b/Modules/Logging.psm1 @@ -4,14 +4,15 @@ function Initialize-DeployCenterLogging { [CmdletBinding()] param( - [Parameter(Mandatory = $true)] - [string]$LogRoot, - [AllowNull()] [string]$IPv4 = $null ) - $script:LogRoot = $LogRoot + $tempRoot = [Environment]::GetEnvironmentVariable('TEMP') + if ([string]::IsNullOrWhiteSpace($tempRoot)) { + throw 'The TEMP environment variable is not defined.' + } + $script:LogRoot = Join-Path $tempRoot 'DeployCenter' if (-not (Test-Path -LiteralPath $script:LogRoot -PathType Container)) { New-Item -Path $script:LogRoot -ItemType Directory -Force -ErrorAction Stop | Out-Null } diff --git a/README-en.md b/README-en.md index a390ccf..618c7ac 100644 --- a/README-en.md +++ b/README-en.md @@ -159,6 +159,8 @@ Enter the password at the hidden prompt, then put the resulting value in `[Unatt The `SupportProvider`, `SupportURL`, and `SupportAppURL` keys are optional. `SupportURL` is a support website; `SupportAppURL` is the protocol for a support application. `WallpaperPath` accepts an absolute or DeployCenter-relative `.png`, `.jpg`, or `.bmp` path. When empty, the Windows wallpaper is left unchanged. These customizations apply when an Unattend profile is selected, not with **Use OOBE**. +The `OEMInstallation` Unattend profile asks Windows not to enable automatic BitLocker device encryption (`PreventDeviceEncryption=true`). It also disables hibernation and automatic sleep while on AC power; battery behavior is unchanged. Disabling hibernation also disables Fast Startup. These settings do not apply to **Use OOBE**, which keeps the default Windows behavior. A policy or manual action can still enable BitLocker later. + ## Unattended deployment `-NonInteractive` starts deployment without asking for the choices on the first page. All required parameters must be provided, and `-ConfirmDiskErase` is mandatory. The progress window is still displayed. @@ -195,7 +197,7 @@ Conditional and optional parameters: ## Logs and troubleshooting -The **Log** button opens the session log. Log files are created in `Logs` with the detected IPv4 address and a timestamp. After a deployment attempt, a copy is placed at the root of `C:\` so it remains accessible if the network share is no longer available. +The **Log** button opens the session log. The file is created in `%TEMP%\DeployCenter` with the detected IPv4 address and a timestamp, so the DeployCenter repository can remain read-only. After a deployment attempt, a copy is placed at the root of `C:\` so it remains accessible if the network share is no longer available. WinPE clears `%TEMP%` on restart. If deployment fails: diff --git a/README.md b/README.md index 4897b09..877c666 100644 --- a/README.md +++ b/README.md @@ -159,6 +159,8 @@ Saisissez le mot de passe à l’invite masquée, puis placez la valeur produite Les clés `SupportProvider`, `SupportURL` et `SupportAppURL` sont facultatives. `SupportURL` correspond à un site Web d’assistance ; `SupportAppURL` correspond au protocole d’une application d’assistance. `WallpaperPath` accepte un chemin `.png`, `.jpg` ou `.bmp`, absolu ou relatif au dossier DeployCenter ; vide, il laisse le fond Windows inchangé. Ces personnalisations sont appliquées avec un profil Unattend, pas avec **Use OOBE**. +Le profil Unattend `OEMInstallation` demande à Windows de ne pas activer le chiffrement automatique de l’appareil via BitLocker (`PreventDeviceEncryption=true`). Il désactive aussi l’hibernation et la veille automatique lorsque le PC est sur secteur ; le comportement sur batterie reste inchangé. La désactivation de l’hibernation désactive également le démarrage rapide. Ces options ne s’appliquent pas au choix **Avec OOBE**, qui conserve le comportement Windows par défaut. Une stratégie ou une action manuelle peut toujours activer ultérieurement le chiffrement BitLocker. + ## Déploiement automatisé `-NonInteractive` lance le déploiement sans demander les choix de la première page. Tous les paramètres requis doivent être fournis et `-ConfirmDiskErase` est obligatoire. L’application affiche toujours la fenêtre de progression. @@ -195,7 +197,7 @@ Paramètres conditionnels et facultatifs : ## Journaux et dépannage -Le bouton **Journal** ouvre le journal de session. Les fichiers sont créés dans `Logs` avec l’adresse IPv4 détectée et l’horodatage. Après une tentative de déploiement, une copie du journal est placée à la racine de `C:\` pour rester accessible même si le partage réseau n’est plus disponible. +Le bouton **Journal** ouvre le journal de session. Le fichier est créé dans `%TEMP%\DeployCenter` avec l’adresse IPv4 détectée et l’horodatage ; le dépôt DeployCenter peut donc rester en lecture seule. Après une tentative de déploiement, une copie du journal est placée à la racine de `C:\` pour rester accessible même si le partage réseau n’est plus disponible. Le contenu de `%TEMP%` est supprimé au redémarrage de WinPE. En cas d’échec : diff --git a/Unattend/Templates/OEMInstallation.xml b/Unattend/Templates/OEMInstallation.xml index 1734928..3670ce5 100644 --- a/Unattend/Templates/OEMInstallation.xml +++ b/Unattend/Templates/OEMInstallation.xml @@ -5,6 +5,9 @@ + + true + @@ -17,6 +20,16 @@ Enable NumLock for new users cmd.exe /c reg load HKU\DeployCenterDefaultUser "%SystemDrive%\Users\Default\NTUSER.DAT" && reg add "HKU\DeployCenterDefaultUser\Control Panel\Keyboard" /v InitialKeyboardIndicators /t REG_SZ /d 2 /f && reg unload HKU\DeployCenterDefaultUser + + 3 + Disable hibernation + cmd.exe /c powercfg.exe /hibernate off + + + 4 + Disable automatic sleep on AC power + cmd.exe /c powercfg.exe /change standby-timeout-ac 0 +