Code : Tout sélectionner
#RequireAdmin ;permet d'activer un controle de compte d'utilisateur au demarrage
#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <IE.au3>
;~ Opt("MustDeclareVars", 1) ; À METTRE DANS TOUS VOS SCRIPTS !
Opt("GUIOnEventMode", 1) ; Activation du mode évenementiel
;Declaration de l'array principale!!!
; Si il y a plus de checkbox, remplacer le 42 par : (nombre de checkbox + 1)
; Depuis la derniere version d'AutoIt, vous n'êtes plus obligé d'indiquer le nombre de dimension lorsque vous déclarez le contenu explicitement
Enum $C_ID, $C_NOM, $C_NOMEXE, $C_PARAMETER, $C_COMMUN, $C_MSGBOX ;les colonnes du tableau $C_ID=Identification, $C-NOM=Nom du logiciel, $C_NOMEXE=Nom du fichier exe, $C_PARAMETER=Parametre d'installation silencieuse, $C_COMMUN=Quand il indique True le logiciel est coché quand on coche "Selectionner les logiciels commun", $C_MSGBOX=Message dans documentation
Global $a_installer = [ [ ["", "Sécurité", "", "", False, ""], _
["", "Norton Antivirus", "Norton_Antivirus.exe", "", True, ""], _
["", "Cobian Backup", "Cobian_Backup.exe", "", True, ""]], _
[ ["", "Multimédia", "", "", False, ""], _
["", "AveIcon2", "AveIcon2.exe", "", False, ""], _
["", "Camstudio", "Camstudio.exe", "", False, ""], _
["", "Codec Camstudio", "Codec_Camstudio", "", False, ""], _
["", "Flash IE", "Flash_IE.exe", "", True, ""], _
["", "Flash Mozilla", "Flash_Mozilla.exe", "", True, ""], _
["", "Java", "java.exe", "/s REBOOT=Suppress", True, "Java est un langage de programmation et une plate-forme informatique qui ont été créés par Sun Microsystems en 1995. Beaucoup d'applications et de sites Web ne fonctionnent pas si Java n'est pas installé et leur nombre ne cesse de croître chaque jour. Java est rapide, sécurisé et fiable."], _
["", "Photofiltre", "Photofiltre.exe", "", True, ""], _
["", "The Gimp", "The_Gimp.exe", "", False, ""], _
["", "VLC", "VLC.exe", "", False, ""], _
["", "VSO Image Resizer", "VSo_Image_Resizer.exe", "", True, ""]], _
[ ["", "Programmation", "", "", False, ""], _
["", "AutoIt", "AutoIt.exe", "", False, ""], _
["", "Notepad", "NotePad.exe", "", False, ""]], _
[ ["", "Système", "", "", False, ""], _
["", "CCleaner", "CCleaner.exe", "/S", True, "CCleaner (abréviation de Crap Cleaner) est un logiciel freeware permettant d'optimiser le fonctionnement d’un ordinateur muni du système d’exploitation Windows et de protéger la vie privée des utilisateurs de l’ordinateur. Il supprime les fichiers et les enregistrements inutiles, ce qui permet à l’ordinateur de fonctionner plus rapidement et libère de l’espace sur le disque dur."], _
["", "Dial A Fix", "Dial_A_Fix.exe", "", False, ""]], _
[ ["", "Manipulation de fichiers", "", "", False, ""], _
["", "Full Sync", "Full_Sync.exe", "", False, ""], _
["", "Super Copier", "Super_Copier.exe", "", False, ""], _
["", "Lupas Rename", "Lupas_Rename.exe", "", False, ""], _
["", "PC Inspector File Recovery", "PC_Inspector_File_Recovery.exe", "", True, ""], _
["", "Rep Listing", "Rep_Listing.exe", "", False, ""]], _
[ ["", "Scientifique", "", "", False, ""], _
["", "R", "R.exe", "", False, ""], _
["", "SciLab", "SciLab.exe", "", False, ""]], _
[ ["", "Bureautique", "", "", False, ""], _
["", "Foxit Reader", "Foxit_Reader.exe", "", True, ""], _
["", "Open Office", "Open_Office.exe", "", True, "Open Office est une suite bureautique libre comprenant un traitement de texte, un tableur, un logiciel de présentation et un logiciel de dessin. Cette suite est entièrement gratuite et concurrente directe de Microsoft Office."], _
["", "PDF Creator", "PDF_Creator.exe", "", True, ""], _
["", "Tex Maker", "Tex_Maker.exe", "", True, ""]], _
[ ["", "Réseaux", "", "", False, ""], _
["", "IP Scan", "IP_Scan.exe", "", False, ""], _
["", "Magic IP", "Magic_IP.exe", "", False, ""], _
["", "Mozilla Firefox", "Firefox.exe", "-ms", True, "Firefox est un navigateur Web libre et gratuit, développé et distribué par la Mozilla Foundation avec l'aide de milliers de bénévoles grâce aux méthodes de développement du logiciel libre/open source et à la liberté du code source."], _
["", "NX", "NX.exe", "", True, ""], _
["", "Putty SSH", "Putty_SSH.exe", "", False, ""], _
["", "Super Scan", "Super_Scan.exe", "", False, ""], _
["", "Thunderbird", "Thunderbird.exe", "", False, ""], _
["", "TightVNC", "TightVNC.exe", "", False, ""], _
["", "Ultr@VNC", "UltraVNC.exe", "", False, ""], _
["", "Win2000 Plain Password", "Win2000_Plain_Password.exe", "", False, ""], _
["", "Wireshark", "WireShark.exe", "", True, ""], _
["", "XMing", "XMing.exe", "", False, ""], _
["", "XMing Fonts", "XMing_fonts.exe", "", False, ""]], _
[ ["", "Utilitaires", "", "", False, ""], _
["", "7Zip", "7zip.exe", "/S", True, "7-Zip est un logiciel de compression de données et d’archivage de fichiers fonctionnant sous Windows développé par le Russe Igor Pavlov. C’est un logiciel libre distribué sous licence LGPL, le code LZMA est dans le domaine public, le code AES est sous licence BSD et le code unRAR est sous licence mixte (LGPL + des restrictions unRAR)."]]]
Global $tailleGui = [751, 666]
$gui = GUICreate(" Selectionner les logiciels à installer ", $tailleGui[0], $tailleGui[1]) ;Creation de l'interface graphique
GUISetIcon("Data\autorun.ico")
GUISetOnEvent($GUI_EVENT_CLOSE, "quitter") ;On associe l'évenement "Close" (Alt+F4 / Croix rouge / echap / etc) à la fonction quit
$installer = GUICtrlCreateButton(" Installer ", $tailleGui[0]-90, $tailleGui[1]-35, 75, 25, 0) ; Création du bouton "installer"
$quitter = GUICtrlCreateButton(" Quitter ", $tailleGui[0]-175, $tailleGui[1]-35, 75, 25, 0) ; Création du bouton "quitter"
$documentation = GUICtrlCreateButton(" Documentation ", 8, $tailleGui[1]-35, 83, 25, 0) ; Création du bouton "documentation"
$checkall = GUICtrlCreateCheckbox("Tout cocher / Tout décocher", 105, $tailleGui[1]-80, 177, 17) ;Création de la case à cocher "Tout cocher / Tout décocher"
$checkcommun = GUICtrlCreateCheckbox("Selectionner les logiciels communs", $tailleGui[0]-340, $tailleGui[1]-80, 209, 17) ;Création de la case à cocher "Selectionner les logiciels communs"
GUICtrlSetOnEvent($installer, "install") ;Définit la fonction "install" qui s'applique quand l'utilisateur clique sur le bouton "Installer"
GUICtrlSetOnEvent($quitter, "quitter") ;Définit la fonction "quitter" qui s'applique quand l'utilisateur clique sur le bouton "Quitter"
GUICtrlSetOnEvent($documentation, "documentation") ;Définit la fonction "documentation" qui s'applique quand l'utilisateur clique sur le bouton "Documentation"
GUICtrlSetOnEvent($checkall, "allcheck") ;Définit la fonction "allcheck" qui s'applique quand l'utilisateur clique sur la case à cocher "Tout cocher/ Tout décocher"
GUICtrlSetOnEvent($checkcommun, "allcommun") ;Définit la fonction "allcommun" qui s'applique quand l'utilisateur clique sur la case à cocher "Selectionner les logiciels communs"
Local $pos = [5, 5]
Local $taille = [245, 0]
Local $tailleCheckbox = [100, 17]
Local $tailleDecalage = $tailleCheckbox[1]+15
For $i = 0 To UBound($a_installer, 1)-1
$taille[1] = getTailleByIndex($i)*$tailleDecalage+15
If($pos[1] + $taille[1] >= $tailleGui[1]-100) Then
$pos[0] += $taille[0] + 5
$pos[1] = 5
EndIf
$a_installer[$i][0][$C_ID] = GUICtrlCreateGroup($a_installer[$i][0][$C_NOM], $pos[0], $pos[1], $taille[0], $taille[1])
$pos[1] += 20
For $j = 1 To UBound($a_installer, 2)-1
If(StringLen($a_installer[$i][$j][$C_NOM]) = 0) Then ExitLoop
$a_installer[$i][$j][$C_ID] = GUICtrlCreateCheckbox($a_installer[$i][$j][$C_NOM], $pos[0]+20, $pos[1], $tailleCheckbox[0], $tailleCheckbox[1])
$pos[1] += $tailleDecalage
Next
Next
GUISetState(@SW_SHOW, $gui)
While(1)
Sleep(100)
WEnd
Func documentation() ;Function documentation qui s'applique quand on clique sur le bouton "Documentation"
Local $isRun = False ;Création de la variable $isRun dont il est égale à False
For $i = 0 To UBound($a_installer, 1)-1 ;On met un boucle For, la variable $i=0 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 1.
For $j = 1 To UBound($a_installer, 2)-1 ;On met un boucle For, la variable $j=1 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 2.
If($a_installer[$i][$j][$C_ID] <= 0) Then ExitLoop ;Si l'identification d'un logiciel du tableau $a_installer est inferieur à 0 alors on sort de la boucle For.
If _Ischecked($a_installer[$i][$j][0]) then ;Si une checkbox du tableau $a_installer est cocher alors...
$isRun=True
MsgBox(64, "Informations sur " & $a_installer[$i][$j][$C_NOM], $a_installer[$i][$j][$C_MSGBOX]) ;Message indiquant les informations du logiciel
EndIf ;Fin du IF
Next ;Fin de la boucle For
Next;Fin de la boucle For
If(Not($isRun)) Then ;Si $isRun est egale à False Alors...
MsgBox(16, "Erreur","Vous n'avez rien coché") ;Message d'erreur indiquant que l'utilisateur n'a rien coché
EndIf;Fin du If
EndFunc ;Fin de la fonction
Func allcheck() ;Function allcheck qui s'applique quand on clique sur la case à cocher "Tout cocher/Tout decocher"
Local $state = _Ischecked($checkall) ? $GUI_CHECKED : $GUI_UNCHECKED ;création de la variable $state qui permet de tout cocher et de tout décocher quand on clique sur la case à cocher "checkall"
If _IsChecked($checkall) = $GUI_CHECKED Then ;Si la case à cocher "Tout cocher/Tout décocher" est cocher alors...
GUICtrlSetState($checkcommun,$GUI_UNCHECKED) ;la case à cocher "Selectionner les logiciels communs" se décoche
GUICtrlSetState($checkcommun,$GUI_DISABLE) ;la case à cocher "Selectionner les logiciels communs" se désactive (le checkbox est grisé)
For $i = 0 To UBound($a_installer, 1)-1 ;On met un boucle For, la variable $i=0 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 1.
For $j = 1 To UBound($a_installer, 2)-1 ;On met un boucle For, la variable $j=1 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 2.
If($a_installer[$i][$j][$C_ID] <= 0) Then ExitLoop ;Si l'identification d'un logiciel du tableau $a_installer est inferieur à 0 alors on sort de la boucle For.
GUICtrlSetState($a_installer[$i][$j][$C_ID], $state) ;Tout les checkbox du tableau $a_installer sont cochés
Next ;Fin de la boucle For
Next ;Fin de la boucle For
Else ;Sinon
GUICtrlSetState($checkcommun,$GUI_ENABLE) ;la case à cocher "Selectionner les logiciels communs" s'active (le checkbox n'est pas grisé)
GUICtrlSetState($checkcommun,$GUI_UNCHECKED) ;la case à cocher "Selectionner les logiciels communs" se décoche
For $i = 0 To UBound($a_installer, 1)-1 ;On met un boucle For, la variable $i=0 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 1.
For $j = 1 To UBound($a_installer, 2)-1 ;On met un boucle For, la variable $j=1 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 2.
If($a_installer[$i][$j][$C_ID] <= 0) Then ExitLoop ;Si l'identification d'un logiciel du tableau $a_installer est inferieur à 0 alors on sort de la boucle For.
GUICtrlSetState($a_installer[$i][$j][$C_ID], $state) ;Tout les checkbox du tableau $a_installer sont décochés
Next ;Fin de la boucle For
Next ;Fin de la boucle For
EndIf ;Fin du If
EndFunc ;Fin de la fonction
Func allcommun() ;Function allcommun qui s'applique quand on clique sur la case à cocher "Selectionner les logiciels communs"
Local $state = _Ischecked($checkcommun) ? $GUI_CHECKED : $GUI_UNCHECKED ;création de la variable $state qui permet de tout cocher et de tout décocher quand on clique sur la case à cocher "checkcommun"
Local $i, $j ;Creation de variable $i et $j
If _IsChecked($checkcommun) = $GUI_CHECKED Then ;Si la case à cocher "Selectionner les logiciels communs" est cocher alors...
GUICtrlSetState($checkall,$GUI_DISABLE) ;la case à cocher "Tout cocher / Tout décocher" se désactive (le checkbox est grisé)
GUICtrlSetState($checkall,$GUI_UNCHECKED) ;la case à cocher "Tout cocher / Tout décocher" se décoche
For $i = 0 To UBound($a_installer, 1)-1 ;On met un boucle For, la variable $i=0 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 1.
For $j = 1 To UBound($a_installer, 2)-1 ;On met un boucle For, la variable $j=1 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 2.
If($a_installer[$i][$j][$C_ID] <= 0) Then ExitLoop ;Si l'identification d'un logiciel du tableau $a_installer est inferieur à 0 alors on sort de la boucle For.
If($a_installer[$i][$j][$C_COMMUN]) Then ;Si les logiciels qui ont comme booléen True Alors...
GUICtrlSetState($a_installer[$i][$j][$C_ID], $state) ;les checkbox en communs du tableau $a_installer sont cochés
EndIf ;Fin du If
Next ;fin de la boucle For
Next ;Fin de la boucle For
Else ;Sinon
GUICtrlSetState($checkall,$GUI_ENABLE) ;la case à cocher "Tout coché / Tout décocher" s'active (le checkbox n'est pas grisé)
GUICtrlSetState($checkall,$GUI_UNCHECKED) ;la case à cocher "Tout cocher / Tout décocher" se décoche
For $i = 0 To UBound($a_installer, 1)-1 ;On met un boucle For, la variable $i=0 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 1.
For $j = 1 To UBound($a_installer, 2)-1 ;On met un boucle For, la variable $j=1 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 2.
If($a_installer[$i][$j][$C_ID] <= 0) Then ExitLoop ;Si l'identification d'un logiciel du tableau $a_installer est inferieur à 0 alors on sort de la boucle For.
If($a_installer[$i][$j][$C_COMMUN]) Then ;Si les logiciels qui ont comme booléen True Alors...
GUICtrlSetState($a_installer[$i][$j][$C_ID], $state) ;les checkbox en communs du tableau $a_installer sont décochés
EndIf ;Fin du If
Next ;Fin de la boucle For
Next ;Fin de la boucle For
EndIf ;Fin du If
EndFunc ;Fin de la fonction
Func install() ;Function install() qui s'applique quand on clique sur le bouton "Installer"
Local $isRun = False ;création de la variable $isRun dont il est égale à False
Local $i, $j ;Creation de variable $i et $j
$label=GUICtrlCreateLabel("Veuillez patientez! Installation en cours!!",$tailleGui[0]-500, $tailleGui[1]-35) ;Création d'une étiquette en indiquant à l'utilisateur de patienter
For $i = 0 To UBound($a_installer, 1)-1 ;On met un boucle For, la variable $i=0 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 1.
For $j = 1 To UBound($a_installer, 2)-1 ;On met un boucle For, la variable $j=1 et on sort de la boucle si on renvoie la taille de dimensions du tableau à 2.
If($a_installer[$i][$j][$C_ID] <= 0) Then ExitLoop ;Si l'identification d'un logiciel du tableau $a_installer est inferieur à 0 alors on sort de la boucle For.
If(_IsChecked($a_installer[$i][$j][$C_ID])) Then ;Si un checkbox du tableau $a_installer est coché alors...
If (FileExists(@ProgramFilesDir & "\" & $a_installer[$i][$j][$C_NOM])) Then
$isRun = True
MsgBox(16, "Déjà installé", $a_installer[$i][$j][$C_NOM] & " est déjà installé")
ExitLoop
EndIf
$isRun = True
ShellExecuteWait(@ScriptDir & "\installation\" & $a_installer[$i][$j][$C_NOMEXE], $a_installer[$i][$j][$C_PARAMETER]) ;L'installateur va chercher dans le dossier "installation" le logiciel coché dans le tableau et prend le parametre d'installation de ce logiciel qui permettra l'installé silencieusement
TrayTip("Installation de " & $a_installer[$i][$j][$C_NOM], "Fin de l'installation de " & $a_installer[$i][$j][$C_NOM], 1000) ;Affichage d'une infobulle avec comme titre "Installation de " + le nom du logiciel et comme texte "Fin de l'installation de " + le nom du logiciel pendant 1 seconde
EndIf ;Fin du If
If(_IsChecked($a_installer[$i][$j][$C_ID])) Then
If($a_installer[$j][$i][$C_ID] = False) Then
MsgBox(0,"Fin des installations", "Tout les logiciels sélectionnés ont été installé")
EndIf
EndIf
Next ;Fin de la boucle For
Next ;Fin de la boucle For
GUICtrlSetState($label, $GUI_HIDE)
If(Not($isRun)) Then ;Si $isRun est egale à False Alors...
MsgBox(16, "Erreur","Vous n'avez rien coché") ;Message d'erreur indiquant que l'utilisateur n'a rien coché
EndIf ;Fin du If
EndFunc ;Fin de la fonction
Func getTailleByIndex($indice)
Local $taille = 0
For $i = 1 To UBound($a_installer, 2)-1
If(StringLen($a_installer[$indice][$i][$C_NOM]) <= 0) Then ExitLoop
$taille += 1
Next
Return $taille
EndFunc
Func _Ischecked($control)
Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc
Func quitter() ;Fonction quitter() qui s'applique quand on clique sur le bouton "Quitter"
$msgbox=MsgBox(4,"Quitter??","Voulez-vous vraiment quitter???") ;Message qui demande à l'utilisateur si il veut vraiment quitter
If $msgbox=6 Then ;Si l'utilisateur répond oui (6 correspond à oui et 7 pour non) Alors...
Exit ;Fermeture de l'application
EndIf ;Fin du If
EndFunc ;Fin de la fonction