Update install-AdHoc-Backup-GUI.ps1
This commit is contained in:
parent
5ca482aa46
commit
68f530e72f
@ -1,14 +1,10 @@
|
||||
#Requires -Version 5.1
|
||||
<#
|
||||
Installer AdHoc Backup (GUI) - v1.3.4
|
||||
- Tab "Configurazione (backup.conf)" con UI dinamica (checkbox per booleani, textbox per altri valori)
|
||||
- Struttura: C:\polo\scripts\bin\RClone\ C:\polo\scripts\bin\7Zip\ C:\polo\scripts\bin\conf\
|
||||
- Config: C:\polo\scripts\bin\conf\backup.conf e C:\polo\scripts\bin\conf\rclone.conf
|
||||
- "Installa": scarica/installa Rclone e **solo 7zr.exe** (nessun alias 7z.exe) nelle cartelle bin\
|
||||
- Dopo estrazione elimina ZIP di Rclone
|
||||
- Avvio "Configura rclone" con Start-Process diretto (no cmd.exe)
|
||||
- Schedulazione giornaliera/settimanale via schtasks; AdHoc-Backup.ps1 avviato con -Config <bin\conf\backup.conf>
|
||||
- Chiusura di tutte le console aperte dall’installer alla chiusura della finestra
|
||||
Installer AdHoc Backup (GUI) - v1.3.5
|
||||
- Fix: editing nel tab Config -> niente più "indice null" (usa $sender.Tag per mappare il key)
|
||||
- Solo 7zr.exe (nessun alias 7z.exe) in C:\polo\scripts\bin\7Zip\
|
||||
- Rclone auto, pulizia ZIP, layout bin/conf
|
||||
- Schedulazione via schtasks, chiusura console figlie
|
||||
#>
|
||||
|
||||
Add-Type -AssemblyName System.Windows.Forms
|
||||
@ -146,7 +142,7 @@ $global:ChildPids = New-Object System.Collections.ArrayList
|
||||
function Track-Child($p){ if ($p -and $p.Id) { [void]$global:ChildPids.Add($p.Id) } }
|
||||
|
||||
$global:ConfUi = @{
|
||||
Map = $null
|
||||
Map = [ordered]@{}
|
||||
Order = @()
|
||||
Controls = @{}
|
||||
SourceLines = @()
|
||||
@ -174,6 +170,7 @@ function Parse-BackupConf {
|
||||
}
|
||||
|
||||
function Save-BackupConf { param([Parameter(Mandatory)][string]$Path)
|
||||
if (-not $global:ConfUi.Map) { throw "Mappa configurazione non inizializzata." }
|
||||
$out = New-Object System.Collections.Generic.List[string]
|
||||
foreach ($entry in $global:ConfUi.Order){
|
||||
if ($entry.type -eq 'kv'){
|
||||
@ -261,18 +258,36 @@ function Build-ConfigUI {
|
||||
$cfgPanel.Controls.Clear(); $global:ConfUi.Controls = @{}
|
||||
$xLabel=10; $xCtrl=260; $y=10; $h=24
|
||||
foreach ($k in $global:ConfUi.Map.Keys) {
|
||||
$v = $global:ConfUi.Map[$k]
|
||||
$lbl = New-Object System.Windows.Forms.Label; $lbl.Text=$k; Set-Loc $lbl $xLabel ($y+4); Set-Sz $lbl 240 $h; $cfgPanel.Controls.Add($lbl)
|
||||
$key = [string]$k # copia locale e forte tipizzazione
|
||||
$v = $global:ConfUi.Map[$key]
|
||||
$lbl = New-Object System.Windows.Forms.Label; $lbl.Text=$key; $lbl.Tag=$key; Set-Loc $lbl $xLabel ($y+4); Set-Sz $lbl 240 $h; $cfgPanel.Controls.Add($lbl)
|
||||
if (Is-BoolString $v) {
|
||||
$chk = New-Object System.Windows.Forms.CheckBox
|
||||
$chk.Tag = $key
|
||||
$chk.Checked = (('1','true','yes','y') -contains ($v.ToString().ToLower()))
|
||||
Set-Loc $chk $xCtrl ($y+2); Set-Sz $chk 20 $h
|
||||
$chk.Add_CheckedChanged({ $global:ConfUi.Map[$k] = if ($chk.Checked) { 'true' } else { 'false' } })
|
||||
$cfgPanel.Controls.Add($chk); $global:ConfUi.Controls[$k]=$chk
|
||||
$chk.add_CheckedChanged({ param($sender,$args)
|
||||
try {
|
||||
$k2 = [string]$sender.Tag
|
||||
if (-not [string]::IsNullOrEmpty($k2)) {
|
||||
$global:ConfUi.Map[$k2] = if ($sender.Checked) { 'true' } else { 'false' }
|
||||
}
|
||||
} catch { Write-Log "Update booleano fallito: $($_.Exception.Message)" 'WARN' }
|
||||
})
|
||||
$cfgPanel.Controls.Add($chk); $global:ConfUi.Controls[$key]=$chk
|
||||
} else {
|
||||
$tb = New-Object System.Windows.Forms.TextBox; $tb.Text=$v; Set-Loc $tb $xCtrl $y; Set-Sz $tb 540 $h
|
||||
$tb.Add_TextChanged({ $global:ConfUi.Map[$k] = $tb.Text })
|
||||
$cfgPanel.Controls.Add($tb); $global:ConfUi.Controls[$k]=$tb
|
||||
$tb = New-Object System.Windows.Forms.TextBox
|
||||
$tb.Tag = $key
|
||||
$tb.Text=$v; Set-Loc $tb $xCtrl $y; Set-Sz $tb 540 $h
|
||||
$tb.add_TextChanged({ param($sender,$args)
|
||||
try {
|
||||
$k2 = [string]$sender.Tag
|
||||
if (-not [string]::IsNullOrEmpty($k2)) {
|
||||
$global:ConfUi.Map[$k2] = $sender.Text
|
||||
}
|
||||
} catch { Write-Log "Update testo fallito: $($_.Exception.Message)" 'WARN' }
|
||||
})
|
||||
$cfgPanel.Controls.Add($tb); $global:ConfUi.Controls[$key]=$tb
|
||||
}
|
||||
$y += 28
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user