Je viens de créer un utilitaire qui fait le ménage dans les mises à jours de Windows
- il supprime les fichiers de désinstallations de hotfix (C:\windows\$NtUninstallKBxxxxxx$)
- il supprime les fichiers log qui correspondent à d'anciennes désinstallations de hotfix
- il supprime les clés de registre qui correspondent à d'anciennes désinstallations de hotfix
- il supprime les fichiers de désinstallations des correctifs windows installer qui se trouvent dans C:\WINDOWS\INSTALLER
Pour le réaliser, j'ai utilisé :
- - des tableaux à 1 ou plusieurs dimensions
- une fenetre "personnalisée"
- des barres de progression
► Afficher le texte
Code : Tout sélectionner
;=======================================================================================================================
; appel des librairies
;=======================================================================================================================
#Include <File.au3>
#include <Array.au3>
#include <GUIConstantsEx.au3>
#include <GuiButton.au3>
#include <ProgressConstants.au3>
#include <WindowsConstants.au3>
;=======================================================================================================================
; déclaration des variables
;=======================================================================================================================
Opt("MustDeclareVars", 1)
; définition des constantes
GLOBAL Const $constUninstall = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"
GLOBAL Const $constARPCache = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Management\ARPCache\"
; variables spécifiques à la fenetre
LOCAL $supprimer, $annuler, $reponse, $strFin, $afficher, $fermer
LOCAL $progresshot, $progresslog, $progresscle, $progressmsp
LOCAL $intTOP = 20
LOCAL $intTOPhot, $intTOPlog, $intTOPcle, $intTOPmsp
LOCAL $intHauteur = 300
LOCAL $intNombre = 0
LOCAL $labelMessage
; définition des couleurs
LOCAL $color_BOUTON = "0x0000FF"
LOCAL $color_FOND = "0x595454"
LOCAL $color_TEXTE = "0xFFF380"
LOCAL $color_FENETRE = "0x737CA1"
LOCAL $color_AFFICHER = "0xF75D59"
LOCAL $color_MESSAGE = "0x347C2C"
LOCAL $color_CADRE = "0xC9C299"
; définition des tableaux
GLOBAL $arrHotfix[1][1]
GLOBAL $arrLogs[1]
GLOBAL $arrRegistre[1][1]
GLOBAL $arrMsp[1]
; définition des compteurs
LOCAL $ctrHot
LOCAL $ctrLog
LOCAL $ctrCle
LOCAL $ctrMsp
; autres variables
LOCAL $strAfficher, $intLongueur
;=======================================================================================================================
; début du programme
;=======================================================================================================================
; on prépare le message à afficher
$strAfficher = "Recherche des « hotfix » en cours ..."
; on calcule la longueur du message
$intLongueur = StringLen($strAfficher) * 9
; on affiche le message
SplashTextOn("", $strAfficher, $intLongueur, 70, -1, -1, 0 + 1 + 16 + 32, "Times New Roman", 12, 800)
; on met une pause pour que l'utilisateur puisse lire le message
Sleep(1000)
;-----------------------------------------------------------
; on appelle la fonction de recherche des HOTFIX installés
;-----------------------------------------------------------
; on stocke le nombre de hotfix dans la première case du tableau
$arrHotfix[0][0] = 0
; on appelle la fonction
_ListeHotfix(@WindowsDir)
;-----------------------------------------------------------
; on appelle la fonction de recherche des logs HOTFIX orphelins
;-----------------------------------------------------------
; on stocke le nombre de logs hotfix dans la première case du tableau
$arrLogs[0] = 0
; on appelle la fonction
_ListeLogs(@WindowsDir)
;-----------------------------------------------------------
; on appelle la fonction de recherche des clés de registre
;-----------------------------------------------------------
; on stocke le nombre de clés de registre dans la première case du tableau
$arrRegistre[0][0] = 0
; on appelle la fonction pour la ruche Uninstall
_ListeRegistre($constUninstall, "OUI")
; on appelle la fonction pour la ruche ARPCache
_ListeRegistre($constARPCache, "NON")
;-----------------------------------------------------------
; on appelle la fonction de recherche des fichiers msp
;-----------------------------------------------------------
; on stocke le nombre de fichiers msp dans la première case du tableau
$arrMsp[0] = 0
; on appelle la fonction
_ListeMsp(@WindowsDir & "\Installer\")
; on efface le message
SplashOff()
;-----------------------------------------------------------
; On ouvre la boite de dialogue
;-----------------------------------------------------------
GUICreate("Désinstallation des HOTFIX", 400, $intHauteur, -1, -1, $WS_EX_CLIENTEDGE)
; on affiche le label des HOTFIX
GUICtrlCreateLabel("Nombre de désinstallations de HOTFIX :", 20, $intTOP, 250, 20, 0x01)
; on change la couleur du fond, la couleur du texte et les attributs de la police
GUICtrlSetBkColor ( -1, $color_FOND )
GUICtrlSetColor ( -1, $color_TEXTE )
GUICtrlSetFont ( -1, 9, 800, 4)
; on affiche le nombre de HOTFIX installés
GUICtrlCreateLabel($arrHotfix[0][0], 270, $intTOP, 40, 20, 0x01)
GUICtrlSetBkColor ( -1, $color_AFFICHER )
GUICtrlSetColor ( -1, $color_TEXTE )
GUICtrlSetFont ( -1, 10, 800)
; on sauvegarde la position pour la barre de progression
If $arrHotfix[0][0] > 0 Then $intTOPhot = $intTOP + 20
$intTOP = $intTOP + 40
; on affiche le label des LOGS de hotfix
GUICtrlCreateLabel("Nombre de LOG de HOTFIX orphelins :", 20, $intTOP, 250, 20, 0x01)
; on change la couleur du fond, la couleur du texte et les attributs de la police
GUICtrlSetBkColor ( -1, $color_FOND )
GUICtrlSetColor ( -1, $color_TEXTE )
GUICtrlSetFont ( -1, 9, 800, 4)
; on affiche le nombre de LOG de hotfix
GUICtrlCreateLabel($arrLogs[0], 270, $intTOP, 40, 20, 0x01)
GUICtrlSetBkColor ( -1, $color_AFFICHER )
GUICtrlSetColor ( -1, $color_TEXTE )
GUICtrlSetFont ( -1, 10, 800)
; on sauvegarde la position pour la barre de progression
If $arrLogs[0] > 0 Then $intTOPlog = $intTOP + 20
$intTOP = $intTOP + 40
; on affiche le label des clés de registre orphelines
GUICtrlCreateLabel("Nombre de clés de registre orphelines :", 20, $intTOP, 250, 20, 0x01)
; on change la couleur du fond, la couleur du texte et les attributs de la police
GUICtrlSetBkColor ( -1, $color_FOND )
GUICtrlSetColor ( -1, $color_TEXTE )
GUICtrlSetFont ( -1, 9, 800, 4)
; on affiche le nombre de clés de registre orphelines
GUICtrlCreateLabel($arrRegistre[0][0], 270, $intTOP, 40, 20, 0x01)
GUICtrlSetBkColor ( -1, $color_AFFICHER )
GUICtrlSetColor ( -1, $color_TEXTE )
GUICtrlSetFont ( -1, 10, 800)
; on sauvegarde la position pour la barre de progression
If $arrRegistre[0][0] > 0 Then $intTOPcle = $intTOP + 20
$intTOP = $intTOP + 40
; on affiche le label des fichiers MSP
GUICtrlCreateLabel("Nombre de correctifs Windows Installer :", 20, $intTOP, 250, 20, 0x01)
; on change la couleur du fond, la couleur du texte et les attributs de la police
GUICtrlSetBkColor ( -1, $color_FOND )
GUICtrlSetColor ( -1, $color_TEXTE )
GUICtrlSetFont ( -1, 9, 800, 4)
; on affiche le nombre de MSP de hotfix
GUICtrlCreateLabel($arrMsp[0], 270, $intTOP, 40, 20, 0x01)
GUICtrlSetBkColor ( -1, $color_AFFICHER )
GUICtrlSetColor ( -1, $color_TEXTE )
GUICtrlSetFont ( -1, 10, 800)
; on sauvegarde la position pour la barre de progression
If $arrMsp[0] > 0 Then $intTOPmsp = $intTOP + 20
;-----------------------------------------------------------
; On prépare le bas de la fenetre
;-----------------------------------------------------------
; on prépare le label des messages
$intTOP = $intTOP + 50
$labelMessage = GUICtrlCreateLabel("", 20, $intTOP, 360, 15, 0x01)
; on change la couleur du texte et les attributs de la police
GUICtrlSetBkColor ( $labelMessage, $color_CADRE )
GUICtrlSetColor ( $labelMessage, $color_MESSAGE )
GUICtrlSetFont ( $labelMessage, 9, 450, 2)
$intTOP = $intTOP + 40
; on affiche le bouton AFFICHER
$afficher = GUICtrlCreateButton("Afficher", 20, $intTOP - 10, 80, 30)
; on change la couleur du texte et les attributs de la police
GUICtrlSetColor ( $afficher, $color_BOUTON )
GUICtrlSetFont ( $afficher, 9, 800)
; on affiche le bouton ANNULER et on lui attribut la valeur PAR DEFAUT
$annuler = GUICtrlCreateButton("Annuler", 225, $intTOP - 10, 70, 30)
GUICtrlSetState ( $annuler, $GUI_DEFBUTTON)
; on change la couleur du texte et les attributs de la police
GUICtrlSetColor ( $annuler, $color_BOUTON )
GUICtrlSetFont ( $annuler, 9, 800)
; on affiche le bouton FERMER
$fermer = GUICtrlCreateButton("Fermer", 305, $intTOP - 10, 80, 30)
; on change la couleur du texte et les attributs de la police
GUICtrlSetColor ( $fermer, $color_BOUTON )
GUICtrlSetFont ( $fermer, 9, 800)
; on cache le bouton FERMER
GUICtrlSetState ( $fermer, $GUI_DISABLE + $GUI_HIDE)
; on affiche le bouton SUPPRIMER
$supprimer = GUICtrlCreateButton("Supprimer", 305, $intTOP - 10, 80, 30)
; on change la couleur du texte et les attributs de la police
GUICtrlSetColor ( $supprimer, $color_BOUTON )
GUICtrlSetFont ( $supprimer, 9, 800)
; on change la couleur de fond
GUISetBkColor($color_FENETRE)
; on valide l'affichage de la fenetre
GUISetState()
; on récupère le nombre de HOTFIX + le nombre de LOG + le nombre de CLES
$intNombre = $arrHotfix[0][0] + $arrLogs[0] + $arrRegistre[0][0] + $arrMsp[0]
If $intNombre = 0 Then GUICtrlSetState ( $supprimer, $GUI_DISABLE)
;-----------------------------------------------------------
; On traite les évènements de la fenetre
;-----------------------------------------------------------
Do
$reponse = GUIGetMsg()
$strFin = "NON"
Select
Case $reponse = $supprimer
; on désactive les boutons ANNULER et SUPPRIMER
GUICtrlSetState ( $afficher, $GUI_DISABLE)
GUICtrlSetState ( $annuler, $GUI_DISABLE)
GUICtrlSetState ( $supprimer, $GUI_DISABLE)
; on vérifie si on a trouvé des hotfix
If $arrHotfix[0][0] > 0 Then
; on affiche une barre de progression
$progresshot = GUICtrlCreateProgress(20, $intTOPhot, 290, 10)
; on traite chaque hotfix
For $ctrHot = 1 to ($arrHotfix[0][0]) Step 1
; on met à jour la barre de progression
GUICtrlSetData($progresshot, $ctrHot * (100 / $arrHotfix[0][0]))
; on affiche un message pour informer l'utilisateur
GUICtrlSetData ( $labelMessage, "Suppression de « " & $arrHotfix[$ctrHot][1] & " »...")
; on appelle la fonction de suppression du HOTFIX
_SupprimerHotfix($arrHotfix[$ctrHot][0], $arrHotfix[$ctrHot][1])
Next
EndIf
; on vérifie si on a trouvé des logs orphelins
If $arrLogs[0] > 0 Then
; on affiche une barre de progression
$progresslog = GUICtrlCreateProgress(20, $intTOPlog, 290, 10)
; on traite chaque log orphelin
For $ctrLog = 1 to ($arrLogs[0]) Step 1
; on met à jour la barre de progression
GUICtrlSetData($progresslog, $ctrLog * (100 / $arrLogs[0]))
; on affiche un message pour informer l'utilisateur
GUICtrlSetData ( $labelMessage, "Suppression de « " & $arrLogs[$ctrLog] & " »...")
; on appelle la fonction de suppression de la LOG
_SupprimerLogs($arrLogs[$ctrLog])
Next
EndIf
; on vérifie si on a trouvé des clés de registre orphelines
If $arrRegistre[0][0] > 0 Then
; on affiche une barre de progression
$progresscle = GUICtrlCreateProgress(20, $intTOPcle, 290, 10)
; on traite chaque clé de registre orpheline
For $ctrCle = 1 to ($arrRegistre[0][0]) Step 1
; on met à jour la barre de progression
GUICtrlSetData($progresscle, $ctrCle * (100 / $arrRegistre[0][0]))
; on affiche un message pour informer l'utilisateur
GUICtrlSetData ( $labelMessage, "Suppression de « " & $arrRegistre[$ctrCle][1] & " »...")
; on appelle la fonction de suppression de la clé de registre
_SupprimerCles($arrRegistre[$ctrCle][0], $arrRegistre[$ctrCle][1])
Next
EndIf
; on vérifie si on a trouvé des fichiers msps
If $arrMsp[0] > 0 Then
; on affiche une barre de progression
$progressmsp = GUICtrlCreateProgress(20, $intTOPmsp, 290, 10)
; on traite chaque msp orphelin
For $ctrMsp = 1 to ($arrMsp[0]) Step 1
; on met à jour la barre de progression
GUICtrlSetData($progressmsp, $ctrMsp * (100 / $arrMsp[0]))
; on affiche un message pour informer l'utilisateur
GUICtrlSetData ( $labelMessage, "Suppression de « " & $arrMsp[$ctrMsp] & " »...")
; on appelle la fonction de suppression du HOTFIX
_SupprimerMsp($arrMsp[$ctrMsp])
Next
EndIf
; on supprime les boutons
GUICtrlDelete($afficher)
GUICtrlDelete($annuler)
GUICtrlDelete($supprimer)
;
; on affiche un message de fin
GUICtrlSetData ( $labelMessage, "Suppressions terminées !")
; on met une pause pour temporiser l'affichage
GUICtrlSetState ( $fermer, $GUI_ENABLE + $GUI_SHOW)
;sleep(2000)
Case $reponse = $afficher
_ArrayDisplay($arrHotfix, "Liste des Hotfix")
_ArrayDisplay($arrLogs, "Liste des Logs orphelins")
_ArrayDisplay($arrRegistre, "Liste des clés de registres")
_ArrayDisplay($arrMsp, "Liste des correctifs Windows Installer")
Case $reponse = $fermer
$strFin = "OUI"
EndSelect
Until $reponse = $annuler or $strFin = "OUI"
;=======================================================================================================================
; fonction de recherche des dossiers HOTFIX
;=======================================================================================================================
Func _ListeHotfix($strDossierHot)
LOCAL $strListeHot = FileFindFirstFile($strDossierHot & "\*")
LOCAL $strNomHot
LOCAL $intInsererHot
LOCAL $strVerifierHot
LOCAL $intLongueurHot
LOCAL $intDebutHot
; on va parcourir les dossiers un par un
While 1
; on récupère le nom du fichier
$strNomHot = FileFindNextFile($strListeHot)
If @error Then ExitLoop
; on prépare le nom complet (dossier + fichier)
$strVerifierHot = $strDossierHot & "\" & $strNomHot
; on vérifie si c'est un dossier ou un fichier
If StringInStr(FileGetAttrib($strVerifierHot), "D") Then
; on vérifie si c'est un dossier hotfix
If StringLeft( $strNomHot, 3) = "$Nt" Then
;on récupère le nombre de dossiers
$intInsererHot = $arrHotfix[0][0] + 1
; on redimensionne le tableau des dossiers
ReDim $arrHotfix[$intInsererHot + 1][2]
; on stocke le nom du dossier
$arrHotfix[$intInsererHot][0] = $strDossierHot & "\" & $strNomHot
; on vérifie le type de hotfix
If StringMid( $strNomHot, 4, 9) = "Uninstall" Then
$intDebutHot = 13
Else
$intDebutHot = 4
EndIf
; on stocke le nom du hotfix
$intLongueurHot = StringLen($strNomHot) - $intDebutHot
$arrHotfix[$intInsererHot][1] = StringMid($strNomHot, $intDebutHot, $intLongueurHot)
; on enregistre le nombre de dossiers
$arrHotfix[0][0] = $intInsererHot
EndIf
EndIf
WEnd
; on ferme la liste des dossiers et fichiers
FileClose($strListeHot)
EndFunc
;=======================================================================================================================
; fonction de recherche des LOGS hotfix
;=======================================================================================================================
Func _ListeLogs($strDossierLog)
LOCAL $strListeLog = FileFindFirstFile($strDossierLog & "\*")
LOCAL $strNomLog
LOCAL $intInsererLog
LOCAL $strVerifierLog
LOCAL $intPresentLog
LOCAL $intLongueurLog
LOCAL $strAjouterLog
; on va parcourir les fichiers un par un
While 1
; on récupère le nom du fichier
$strNomLog = FileFindNextFile($strListeLog)
If @error Then ExitLoop
; on prépare le nom complet (dossier + fichier)
$strVerifierLog = $strDossierLog & "\" & $strNomLog
; on vérifie si c'est un dossier ou un fichier
If Not StringInStr(FileGetAttrib($strVerifierLog), "D") Then
; on vérifie si c'est un fichier de type log
If StringRight( $strNomLog, 3) = "log" Then
; on récupère le nom sans l'extension
$intLongueurLog = StringLen($strNomLog) - 4
$strNomLog = StringMid($strNomLog, 1, $intLongueurLog)
; on vérifie si c'est un log de hotfix
If StringLeft( $strNomLog, 2) = "kb" Then
; on vérifie si le log correspond à un hotfix installé
If $arrHotfix[0][0] > 0 Then
$intPresentLog = _ArraySearch($arrHotfix, $strNomLog, 0, 0, 0, 0, 1, 1)
If @error Then
$strAjouterLog = "OUI"
Else
$strAjouterLog = "NON"
EndIf
Else
$strAjouterLog = "OUI"
EndIf
; on vérifie s'il faut ajouter le log dans le tableau
If $strAjouterLog = "OUI" Then
;on récupère le nombre de dossiers
$intInsererLog = $arrLogs[0] + 1
; on redimensionne le tableau des dossiers
ReDim $arrLogs[$intInsererLog + 1]
; on stocke le nom du log
$arrLogs[$intInsererLog] = $strNomLog
; on enregistre le nombre de dossiers
$arrLogs[0] = $intInsererLog
EndIf
EndIf
EndIf
EndIf
WEnd
; on ferme la liste des dossiers et fichiers
FileClose($strListeLog)
EndFunc
;=======================================================================================================================
; fonction de recherche des clés de registre
;=======================================================================================================================
Func _ListeRegistre($strRucheCle, $strComparerCle)
; définition des variables
LOCAL $intPresentCle
LOCAL $intInsererCle
LOCAL $intCompteurCle = 1
LOCAL $strNomCle
LOCAL $strAjouterCle
; on va traiter chaque clé une par une
While 1
; on récupère le nom de la clé
$strNomCle = RegEnumKey($strRucheCle, $intCompteurCle)
If @error Then ExitLoop
; on vérifie si le nom de la clé commence par KB
If StringLeft( $strNomCle, 2) = "KB" Then
; on vérifie si on doit comparer la cle de registre aux valeurs des 2 autres tableaux
If $strComparerCle = "OUI" Then
; on vérifie si la cle de registre correspond à un hotfix installé
If $arrHotfix[0][0] > 0 Then
$intPresentCle = _ArraySearch($arrHotfix, $strNomCle, 0, 0, 0, 0, 1, 1)
If @error Then
$strAjouterCle = "OUI"
Else
$strAjouterCle = "NON"
EndIf
Else
; on vérifie si la cle de registre correspond à un log orphelin
If $arrLogs[0] > 0 Then
$intPresentCle = _ArraySearch($arrLogs, $strNomCle, 0, 0, 0, 0, 1, 1)
If @error Then
$strAjouterCle = "OUI"
Else
$strAjouterCle = "NON"
EndIf
Else
$strAjouterCle = "OUI"
EndIf
EndIf
Else
$strAjouterCle = "OUI"
EndIf
Else
; on vérifie si le nom de la clé contient .KB
If StringInStr ( $strNomCle, ".KB" , 1) Then
; on vérifie si on doit comparer la cle de registre aux valeurs des 2 autres tableaux
If $strComparerCle = "OUI" Then
; on vérifie si la cle de registre correspond à un hotfix installé
If $arrHotfix[0][0] > 0 Then
$intPresentCle = _ArraySearch($arrHotfix, $strNomCle, 0, 0, 0, 0, 1, 1)
If @error Then
$strAjouterCle = "OUI"
Else
$strAjouterCle = "NON"
EndIf
Else
; on vérifie si la cle de registre correspond à un log orphelin
If $arrLogs[0] > 0 Then
$intPresentCle = _ArraySearch($arrLogs, $strNomCle, 0, 0, 0, 0, 1, 1)
If @error Then
$strAjouterCle = "OUI"
Else
$strAjouterCle = "NON"
EndIf
Else
$strAjouterCle = "OUI"
EndIf
EndIf
Else
$strAjouterCle = "OUI"
EndIf
Else
$strAjouterCle = "NON"
EndIf
EndIf
; on vérifie s'il faut ajouter la clé dans le tableau
If $strAjouterCle = "OUI" Then
;on récupère le nombre de clés de registre
$intInsererCle = $arrRegistre[0][0] + 1
; on redimensionne le tableau des clés de registre
ReDim $arrRegistre[$intInsererCle + 1][2]
; on stocke le nom de la ruche
$arrRegistre[$intInsererCle][0] = $strRucheCle
; on stocke le nom de la clé
$arrRegistre[$intInsererCle][1] = $strNomCle
; on enregistre le nombre de clés de registre
$arrRegistre[0][0] = $intInsererCle
EndIf
$intCompteurCle += 1
WEnd
EndFunc
;=======================================================================================================================
; fonction de recherche des fichiers MSP
;=======================================================================================================================
Func _ListeMsp($strDossierMsp)
LOCAL $strListeMsp = FileFindFirstFile($strDossierMsp & "*.msp")
LOCAL $strNomMsp
LOCAL $intInsererMsp
LOCAL $strVerifierMsp
LOCAL $intPresentMsp
LOCAL $intLongueurMsp
LOCAL $strAjouterMsp
; on va parcourir les fichiers un par un
While 1
; on récupère le nom du fichier
$strNomMsp = FileFindNextFile($strListeMsp)
If @error Then ExitLoop
; on prépare le nom complet (dossier + fichier)
$strVerifierMsp = $strDossierMsp & "\" & $strNomMsp
; on vérifie si c'est un dossier ou un fichier
If Not StringInStr(FileGetAttrib($strVerifierMsp), "D") Then
; on récupère le nom sans l'extension
$intLongueurMsp = StringLen($strNomMsp) - 4
$strNomMsp = StringMid($strNomMsp, 1, $intLongueurMsp)
;on récupère le nombre de dossiers
$intInsererMsp = $arrMsp[0] + 1
; on redimensionne le tableau des dossiers
ReDim $arrMsp[$intInsererMsp + 1]
; on stocke le nom du msp
$arrMsp[$intInsererMsp] = $strNomMsp
; on enregistre le nombre de dossiers
$arrMsp[0] = $intInsererMsp
EndIf
WEnd
; on ferme la liste des dossiers et fichiers
FileClose($strListeMsp)
EndFunc
;=======================================================================================================================
; fonction de suppression de HOTFIX
;=======================================================================================================================
Func _SupprimerHotfix($strHotDossier, $strHotNom)
; on supprime le dossier
DirRemove($strHotDossier, 1)
; on supprime le fichier LOG
FileSetAttrib(@WindowsDir & "\" & $strHotNom & ".log", "-RASHNOT")
FileDelete(@WindowsDir & "\" & $strHotNom & ".log")
; on met une pause pour temporiser l'affichage
sleep(100)
; on supprime la clé de registre
RegDelete ($constUninstall & $strHotNom)
EndFunc
;=======================================================================================================================
; fonction de suppression des logs orphelins
;=======================================================================================================================
Func _SupprimerLogs($strLogsNom)
; on supprime le fichier LOG
FileSetAttrib(@WindowsDir & "\" & $strLogsNom & ".log", "-RASHNOT")
FileDelete(@WindowsDir & "\" & $strLogsNom & ".log")
; on met une pause pour temporiser l'affichage
sleep(100)
; on vérifie si une cle existe dans la base de registre
If RegRead($constUninstall & $strLogsNom, "") Then
; on supprime la clé de registre
RegDelete ($constUninstall & $strLogsNom)
EndIf
EndFunc
;=======================================================================================================================
; fonction de suppression des clés de registre orphelines
;=======================================================================================================================
Func _SupprimerCles($strClesRuche, $strClesNom)
; on met une pause pour temporiser l'affichage
sleep(100)
; on supprime la clé de registre
RegDelete ($strClesRuche & $strClesNom)
EndFunc
;=======================================================================================================================
; fonction de suppression des fichiers msps
;=======================================================================================================================
Func _SupprimerMsp($strMspNom)
; on supprime le fichier MSP
FileSetAttrib(@WindowsDir & "\installer\" & $strMspNom & ".msp", "-RASHNOT")
FileDelete(@WindowsDir & "\installer\" & $strMspNom & ".msp")
; on met une pause pour temporiser l'affichage
sleep(100)
EndFunc