Update install-AdHoc-Backup-GUI.ps1
This commit is contained in:
parent
5ca482aa46
commit
68f530e72f
@ -1,14 +1,10 @@
|
|||||||
#Requires -Version 5.1
|
#Requires -Version 5.1
|
||||||
<#
|
<#
|
||||||
Installer AdHoc Backup (GUI) - v1.3.4
|
Installer AdHoc Backup (GUI) - v1.3.5
|
||||||
- Tab "Configurazione (backup.conf)" con UI dinamica (checkbox per booleani, textbox per altri valori)
|
- Fix: editing nel tab Config -> niente più "indice null" (usa $sender.Tag per mappare il key)
|
||||||
- Struttura: C:\polo\scripts\bin\RClone\ C:\polo\scripts\bin\7Zip\ C:\polo\scripts\bin\conf\
|
- Solo 7zr.exe (nessun alias 7z.exe) in C:\polo\scripts\bin\7Zip\
|
||||||
- Config: C:\polo\scripts\bin\conf\backup.conf e C:\polo\scripts\bin\conf\rclone.conf
|
- Rclone auto, pulizia ZIP, layout bin/conf
|
||||||
- "Installa": scarica/installa Rclone e **solo 7zr.exe** (nessun alias 7z.exe) nelle cartelle bin\
|
- Schedulazione via schtasks, chiusura console figlie
|
||||||
- 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
|
|
||||||
#>
|
#>
|
||||||
|
|
||||||
Add-Type -AssemblyName System.Windows.Forms
|
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) } }
|
function Track-Child($p){ if ($p -and $p.Id) { [void]$global:ChildPids.Add($p.Id) } }
|
||||||
|
|
||||||
$global:ConfUi = @{
|
$global:ConfUi = @{
|
||||||
Map = $null
|
Map = [ordered]@{}
|
||||||
Order = @()
|
Order = @()
|
||||||
Controls = @{}
|
Controls = @{}
|
||||||
SourceLines = @()
|
SourceLines = @()
|
||||||
@ -174,6 +170,7 @@ function Parse-BackupConf {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function Save-BackupConf { param([Parameter(Mandatory)][string]$Path)
|
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]
|
$out = New-Object System.Collections.Generic.List[string]
|
||||||
foreach ($entry in $global:ConfUi.Order){
|
foreach ($entry in $global:ConfUi.Order){
|
||||||
if ($entry.type -eq 'kv'){
|
if ($entry.type -eq 'kv'){
|
||||||
@ -261,18 +258,36 @@ function Build-ConfigUI {
|
|||||||
$cfgPanel.Controls.Clear(); $global:ConfUi.Controls = @{}
|
$cfgPanel.Controls.Clear(); $global:ConfUi.Controls = @{}
|
||||||
$xLabel=10; $xCtrl=260; $y=10; $h=24
|
$xLabel=10; $xCtrl=260; $y=10; $h=24
|
||||||
foreach ($k in $global:ConfUi.Map.Keys) {
|
foreach ($k in $global:ConfUi.Map.Keys) {
|
||||||
$v = $global:ConfUi.Map[$k]
|
$key = [string]$k # copia locale e forte tipizzazione
|
||||||
$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)
|
$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) {
|
if (Is-BoolString $v) {
|
||||||
$chk = New-Object System.Windows.Forms.CheckBox
|
$chk = New-Object System.Windows.Forms.CheckBox
|
||||||
|
$chk.Tag = $key
|
||||||
$chk.Checked = (('1','true','yes','y') -contains ($v.ToString().ToLower()))
|
$chk.Checked = (('1','true','yes','y') -contains ($v.ToString().ToLower()))
|
||||||
Set-Loc $chk $xCtrl ($y+2); Set-Sz $chk 20 $h
|
Set-Loc $chk $xCtrl ($y+2); Set-Sz $chk 20 $h
|
||||||
$chk.Add_CheckedChanged({ $global:ConfUi.Map[$k] = if ($chk.Checked) { 'true' } else { 'false' } })
|
$chk.add_CheckedChanged({ param($sender,$args)
|
||||||
$cfgPanel.Controls.Add($chk); $global:ConfUi.Controls[$k]=$chk
|
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 {
|
} else {
|
||||||
$tb = New-Object System.Windows.Forms.TextBox; $tb.Text=$v; Set-Loc $tb $xCtrl $y; Set-Sz $tb 540 $h
|
$tb = New-Object System.Windows.Forms.TextBox
|
||||||
$tb.Add_TextChanged({ $global:ConfUi.Map[$k] = $tb.Text })
|
$tb.Tag = $key
|
||||||
$cfgPanel.Controls.Add($tb); $global:ConfUi.Controls[$k]=$tb
|
$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
|
$y += 28
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user