Files
powershell-scripts/EgtDeploy/GUI/EgtCAM5TestGUI.ps1
T
marco.locatelli@steamware.net 7f87236961 Accorpamento Progetti Powershell Script
2024-02-21 11:23:47 +01:00

211 lines
7.7 KiB
PowerShell

### GRAPHIC USER INTERFACE PER TEST EGTCAM5 ###
#Caricamento classi di .NET Framework
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
Add-Type -AssemblyName PresentationFramework
#Inizializzo variabili vuote
$BitChoice = ""
$ChosenBit = ""
$ChosenDll = ""
#Definisco path truenas di origine
$Artifacts = '\\truenas\Artifacts'
$SrvEgtTech = '\\truenas\Artifacts\EGT_SRV\EgtTech'
#Definisco path test cartelle Egt
$TestProgFolder = 'c:\EgtTestProg'
$TestDataFolder = 'c:\EgtTestData'
#Definisco path test sottocartelle EgtCAM5
$TestProgCam5Folder = 'c:\EgtTestProg\EgtCAM5'
$TestDataCam5Folder = 'c:\EgtTestData\EgtCAM5'
#numero di copie da effettuare
$CopyCount = 12
#assegno il range di valori min max della barra di progresso in base al numero delle macchine trovate
$MinMax = 0..$CopyCount | Measure-Object -Minimum -Maximum
function ProgressBarAndPercentageLabel{
# avanti uno step nella progress bar
$CopyProgressBar.PerformStep()
# calcolo il progresso in %
$ProgressFactor = ($CopyProgressBar.Value/$CopyProgressBar.Maximum)*100
$RoundedPercentage = [math]::Round($ProgressFactor)
#scrivo nel label dedicato la percentuale di avanzamento e faccio refresh progressbar
$PercentageLabel.Text = "$RoundedPercentage %"
$CopyProgressBar.Refresh()
}
function ClearFolders($TestProgCam5Folder, $TestDataCam5Folder){
#Pulisco cartella c:\EgtTestProg\EgtCAM5 se già esistente, poi la creo
if (Test-Path -Path $TestProgCam5Folder) {
"EgtTestProg\EgtCAM5 esiste!"
Remove-Item -Recurse $TestProgCam5Folder\*.*
} else {
new-item $TestProgCam5Folder -itemtype directory
}
#Pulisco cartella c:\EgtTestData\EgtCAM5 se già esistente, poi la creo
if (Test-Path -Path $TestDataCam5Folder) {
"EgtTestData\EgtCAM5 esiste!"
Remove-Item -Recurse $TestDataCam5Folder\*.*
} else {
new-item $TestDataCam5Folder -itemtype directory
}
}
#Definisco funzione che installa il CAM5 richiesto, gli passo i parametri per l'architettura desiderata
function InstallRequiredCAM5($BitChoice, $ChosenBit, $ChosenDll){
#Copio la cartella EgtCAM5
ROBOCOPY /E $SrvEgtTech\EgtProg\EgtCAM5\ $TestProgCam5Folder
ProgressBarAndPercentageLabel
#Copio la cartella Dll desiderata
ROBOCOPY /E $SrvEgtTech\EgtProg\$ChosenDll\ $TestProgCam5Folder
ProgressBarAndPercentageLabel
#Copio EgtCAM5.ini custom in C:\EgtTestProg\EgtCAM5\Config
ROBOCOPY /E $Artifacts\EgtProg\EgtCAM5\Config\ $TestDataCam5Folder\Config EgtCAM5.ini
ProgressBarAndPercentageLabel
#Copio DataRoot.ini custom in C:\EgtTestProg\EgtCAM5
ROBOCOPY /E $Artifacts\EgtProg\EgtCAM5\Config\ $TestProgCam5Folder DataRoot.ini
ProgressBarAndPercentageLabel
#Copio la cartella Lualibs
ROBOCOPY /E $SrvEgtTech\EgtProg\LuaLibs\ $TestProgFolder\LuaLibs
ProgressBarAndPercentageLabel
#Copio la cartella Fonts
ROBOCOPY /E $SrvEgtTech\EgtProg\Fonts\ $TestProgFolder\Fonts
ProgressBarAndPercentageLabel
#Copio la cartella Messages
ROBOCOPY /E $SrvEgtTech\EgtData\Messages\ $TestDataFolder\Messages
ProgressBarAndPercentageLabel
#Copio la cartella ToolMakers
ROBOCOPY /E $SrvEgtTech\EgtData\ToolMakers\ $TestDataCam5Folder\ToolMakers
ProgressBarAndPercentageLabel
#Copio cartella 3dPrinting
ROBOCOPY /E $Artifacts\EgtData\3dPrinting\$ChosenBit\ $TestDataCam5Folder\3dPrinting
ProgressBarAndPercentageLabel
#Copio cartella Beam
ROBOCOPY /E $Artifacts\EgtData\Beam\$ChosenBit\ $TestDataCam5Folder\Beam
ProgressBarAndPercentageLabel
#Copio cartella Wall
ROBOCOPY /E $Artifacts\EgtData\Wall\$ChosenBit\ $TestDataCam5Folder\Wall
ProgressBarAndPercentageLabel
#Copio cartella BeamWall
ROBOCOPY /E $Artifacts\EgtData\BeamWall\$ChosenBit\ $TestDataCam5Folder\BeamWall
ProgressBarAndPercentageLabel
}
#Definisco una finestra in cui è possibile aggiungere controlli.
$Cam5Form = New-Object System.Windows.Forms.Form
$Cam5Form.Text = 'EgtCAM5 Tester'
$Cam5Form.Size = New-Object System.Drawing.Size(400,300)
$Cam5Form.StartPosition = 'CenterScreen'
#Definisco una groupbox per la scelta dell'architettura
$ArchGroupBox = New-Object System.Windows.Forms.GroupBox
$ArchGroupBox.Location = New-Object System.Drawing.Size(20,20)
$ArchGroupBox.size = New-Object System.Drawing.Size(340,80)
$ArchGroupBox.text = "Seleziona architettura EgtCAM5 da testare:"
$Cam5Form.Controls.Add($ArchGroupBox)
#Definisco il bottone per selezionare architettura x86
$x86Button = New-Object System.Windows.Forms.RadioButton
$x86Button.Location = New-Object System.Drawing.Point(20,20)
$x86Button.Size = New-Object System.Drawing.Size(100,23)
$x86Button.Text = 'x86'
$x86Button.Checked = $true
$Cam5Form.Controls.Add($x86Button)
$ArchGroupBox.Controls.Add($x86Button)
#Definisco il bottone per selezionare architettura x64
$x64Button = New-Object System.Windows.Forms.RadioButton
$x64Button.Location = New-Object System.Drawing.Point(20,40)
$x64Button.Size = New-Object System.Drawing.Size(100,23)
$x64Button.Text = 'x64'
$Cam5Form.Controls.Add($x64Button)
$ArchGroupBox.Controls.Add($x64Button)
#Definisco un label per mostrare l'avanzamento dell'operazione in corso
$PercentageLabel = New-Object System.Windows.Forms.Label
$PercentageLabel.Location = New-Object System.Drawing.Point(180,120)
$PercentageLabel.Size = New-Object System.Drawing.Size(280,20)
$PercentageLabel.Text = ""
$PercentageLabel.Visible = $True
$Cam5Form.Controls.Add($PercentageLabel)
#Definisco la barra di avanzamento per mostrare il progresso della copia
$CopyProgressBar = New-Object System.Windows.Forms.ProgressBar
$CopyProgressBar.Width = 320
$CopyProgressBar.Height = 20
$CopyProgressBar.Location = New-Object System.Drawing.Point(20,160)
#assegno i valori minimi e massimi della barra progresso in base al range definito precedentemente
$CopyProgressBar.Minimum = $MinMax.Minimum
$CopyProgressBar.Maximum = $MinMax.Maximum
#inizializzo il value della progress bar al minimo
$CopyProgressBar.Value = $MinMax.Minimum
#definisco lo step della progress bar a 1 (1 step=1 cartella copiata)
$CopyProgressBar.Step = 1
$CopyProgressBar.Style = 'Continuous'
$CopyProgressBar.Visible = $True
$Cam5Form.Controls.Add($CopyProgressBar)
#Definisco il bottone per lanciare installazione richiesta di EgtCAM5
$InstallCAM5Button = New-Object System.Windows.Forms.Button
$InstallCAM5Button.Location = New-Object System.Drawing.Point(20,220)
$InstallCAM5Button.Size = New-Object System.Drawing.Size(100,23)
$InstallCAM5Button.Text = 'Installa EgtCAM5'
$InstallCAM5Button.Add_Click({
if ($x86Button.Checked -eq $true) {
$BitChoice = 'x86'
$ChosenBit = '32'
$ChosenDll = 'Dll32'
}
if ($x64Button.Checked -eq $true) {
$BitChoice = 'x64'
$ChosenBit = '64'
$ChosenDll = 'Dll64'
}
$UserConfirmation = [System.Windows.MessageBox]::Show("Install EgtCAM5 $BitChoice ?",'Conferma Architettura','YesNo','Info')
switch ($UserConfirmation){
'Yes' {
ClearFolders $TestProgCam5Folder $TestDataCam5Folder
InstallRequiredCAM5 $BitChoice $ChosenBit $ChosenDll
[System.Windows.MessageBox]::Show("EgtCAM5 $BitChoice installato!",'Operazione terminata')
$Cam5Form.Close()
$Cam5Form.Dispose()
Powershell.exe -executionpolicy remotesigned -File .\GUI\EgtScriptsGUI.ps1
}
'No'{}
}
})
$Cam5Form.Controls.Add($InstallCAM5Button)
#Definisco il bottone per navigazione al menu precedente
$MenuReturn = New-Object System.Windows.Forms.Button
$MenuReturn.Location = New-Object System.Drawing.Point(260,220)
$MenuReturn.Size = New-Object System.Drawing.Size(100,23)
$MenuReturn.Text = 'Torna alla home'
$MenuReturn.Add_Click({
$Cam5Form.Close()
$Cam5Form.Dispose()
Powershell.exe -executionpolicy remotesigned -File .\GUI\EgtScriptsGUI.ps1
})
$Cam5Form.Controls.Add($MenuReturn)
#Proprietà Topmost su $true per forzare l'apertura della finestra sopra altre finestre e finestre di dialogo aperte.
$Cam5Form.Topmost = $true
#Visualizzo il modulo:
$Cam5Form.ShowDialog()