Header image
Jean-René DANIS

 

   Retour à Script d'installation silencieuse                

  


Scripts d'installation silencieuse
Antivir Personal Edition 8.1.0.367

 

Voici un script qui permet d'installer Antivir Personal Edition 8.1.0.367 sans assistance en Kixtart.

Ligne de commande : inconnue donc je vais utiliser un script qui simmule les touche du clavier.
Il est donc important de ne pas toucher au clavier ni à la souris pendant le déroulement du script.

Principe

Mettre les 3 fichiers suivants dans le même dossier :

antivir-personal-edition_avira_antivir_personal_free_8.1.0.367_anglais_10821.exe : fichier disponible gratuitement sur le site : http://www.free-av.com/
install.bat : décrit ci-dessous
antivir-personal-edition_avira_antivir_personal_free_8.1.0.367_anglais_10821.kix : décrit ci-dessous

Pour installer Antivir Personal Edition 8.1.0.367 de manière silencieuse : double cliquer sur install.bat

Détail des scripts nécessaires

Contenu du fichier install.bat

Prompt $H
cls

@echo .......................................................
@echo INSTALLATION DE antivir_personal_free_8.1.0.367_anglais
@echo JEAN-RENE DANIS 26/11/08
@echo .......................................................

kix32 antivir-personal-edition_avira_antivir_personal_free_8.1.0.367_anglais_10821.kix





Contenu du script antivir-personal-edition_avira_antivir_personal_free_8.1.0.367_anglais_10821.kix (télécharger ce script en pdf couleur ici)

;installation de Antivir Personal Edition 8.1.0.367 à partir du fichier antivir-personal-edition_avira_antivir_personal_free_8.1.0.367_anglais_10821.exe
;JEAN-RENE DANIS 26-11-08

;Liste des variable(s)
;variable qui définit l'emplacement du fichier log
$DossierDeLog = "%systemdrive%\install\log\"
;variable qui définit la destination temporaire :
$dossierprov = '%systemdrive%\install\antivir810367\'
;variable qui définit le dossier de 7Zip ou se trouve 7z.exe :
$SEI_7Z = '%SYSTEMDrive%\Program Files\7-Zip'

;Création du dossier pour mettre le fichier log si ce dossier n'existe pas
IF NOT EXIST ($DossierDeLog)
MD $DossierDeLog
ENDIF

;Ouverture du fichier log et redirection des messages
IF RedirectOutput($DossierDeLog + @SCRIPTNAME + ".txt") = 0
?? "Ouverture de " + @SCRIPTNAME + " à " + @TIME
ELSE
? "Impossible de créer le fichier log"
GOTO "finerreur"
ENDIF

;Définition de la fonction EnumProcess
;http://www.kixtart.org/UDF/
FUNCTION EnumProcess($exe, optional $terminate, optional $Computer)
Dim $winmgmts, $ExecQuery, $Process, $id, $getobject, $
if not $computer $computer=@wksta endif
$winmgmts="winmgmts:{impersonationLevel=impersonate}!//$COMPUTER"
select
case val($exe)>0
$ExecQuery="select * from Win32_Process where ProcessId='$exe'"
$GetObject=GetObject($winmgmts).ExecQuery($ExecQuery)
For each $Process in $GetObject
if $terminate $=$Process.Terminate endif
$EnumProcess = $Process.name
next
$GetObject=''
case vartype($exe)=8
$ExecQuery="select * from Win32_Process where Name='$exe'"
$GetObject=GetObject($winmgmts).ExecQuery($ExecQuery)
For each $Process in $GetObject
if $terminate $=$Process.Terminate endif
$id=$Process.ProcessId
$EnumProcess = "$Id" + "|" + "$EnumProcess"
Next
$EnumProcess=left($EnumProcess,len($EnumProcess)-1)
$GetObject=''
case 1
exit 1
endselect
ENDFUNCTION

;determine le chemin du burreau de tous les utilisateurs
$ALLUSERBUREAU=readvalue("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders","Common Desktop")
? "Chemin du bureau : " + $ALLUSERBUREAU

cd @SCRIPTDIR\

;Décompression du fichier
$fichieradecomp = 'antivir-personal-edition_avira_antivir_personal_free_8.1.0.367_anglais_10821.exe'
$destinationdeladecomp = $dossierprov
$commande='"$SEI_7Z\7z.exe" x -o$destinationdeladecomp $fichieradecomp'
? $commande
shell '%COMSPEC% /c ' + $commande
IF @ERROR <> 0
? "Erreur n° " + @ERROR
GOTO "finerreur"
ENDIF

;Lancement du programme d'installation
$commande=$dossierprov + 'basic\setup.exe'
? $commande
;A la différence de SHELL, RUN n'attend pas que l'application soit terminée.
RUN $commande
IF @ERROR <> 0
? "Erreur n° " + @ERROR
GOTO "finerreur"
ENDIF

;Prend la main sur une fenêtre
$nomdelafenetre = "Avira AntiVir Personal - Free Antivirus"
$whilestf = 1
$lock = 1
WHILE $whilestf <> 0
sleep 1
$lock = $lock + 1
$whilestf = setfocus ($nomdelafenetre)
LOOP
? "Prend la main sur la fenêtre $nomdelafenetre réussi"

;Envoi une touche clavier pour répondre "Suivant"
? "Répond suivant à la fenêtre de bienvenue"
SendKeys ("s")

SendKeys ("s")
? "Répond suivant à la fenêtre 'More Thread categories'"

SendKeys (" ")
? "Coche la cas pour accepter la licence d'utilisation du logiciel AntiVir"

SendKeys ("s")
? "Répond suivant à la fenêtre de la licence d'utilisation de AntiVir"

SendKeys (" ")
? "Coche la cas pour accepter d'utiliser le logiciel AntiVir à des fins personnel et non commercial"

SendKeys ("s")
? "Répond suivant à la fenêtre des condition d'utilisation de AntiVir"

SendKeys ("s")
? "Répond suivant à la fenêtre du choix d'installation en laissant l'option d'installation complète par default"

;Prend la main sur une fenêtre
$nomdelafenetre = "Avira AntiVir Personal - Free Antivirus License wizard"
$whilestf = 1
$lock = 1
WHILE $whilestf <> 0
sleep 1
$lock = $lock + 1
$whilestf = setfocus ($nomdelafenetre)
LOOP
? "Prend la main sur la fenêtre $nomdelafenetre réussi"

SendKeys ("+({TAB}{TAB}{TAB}{TAB}) +{TAB} ")
? "Décoche l'enregistrement et la souscription à la newslettre Avira"

SendKeys ("s")
? "Répond suivant à la fenêtre d'enregistrement d'Antivir et d'abonement à la newslettre Avira"

? "Installation de l'antivirus AntiVir 8 en cours"

;Attend l'existance du processus qui renseigne sur la fin de l'installation.
$ProcessusATrouver = "avgnt.exe"
$whilestf = 1
$lock = 1
WHILE $whilestf <> 0
? "Patienter quelques minutes (essai n°" + $lock +")"
sleep 2
$lock = $lock + 1
if (EnumProcess($ProcessusATrouver)="")
$whilestf = 0
endif
LOOP
? "le processus a été trouvé...patienter 10 secondes"

sleep 10

;Prend la main sur une fenêtre
$nomdelafenetre = "Avira AntiVir Personal - Free Antivirus"
$whilestf = 1
$lock = 1
WHILE $whilestf <> 0
sleep 1
$lock = $lock + 1
$whilestf = setfocus ($nomdelafenetre)
LOOP
? "Prend la main sur la fenêtre $nomdelafenetre réussi"

;Quitte une fenêtre tant qu'elle existe :
$nomdelafenetre = "Avira AntiVir Personal - Free Antivirus"
$whilestf = 1
$lock = 1
WHILE $whilestf <> 0
sleep 5
setfocus ($nomdelafenetre)
? "Prend la main sur la fenêtre $nomdelafenetre"
SendKeys (" ")
? "Décoche l'affichage du fichier readme.txt"
SendKeys ({ENTER})
? "Répond suivant à la fenêtre de fin d'installation d'AntiVir 8"
$whilestf = setfocus ("Setup of Avira AntiVir Personal - Free Antivirus")
$lock = $lock + 1
LOOP
? "La fenêtre $nomdelafenetre n'existe plus."

 

;Prend la main sur une fenêtre
$nomdelafenetre2 = "Setup of Avira AntiVir Personal - Free Antivirus"
$whilestf2 = 1
$lock2 = 1
WHILE $whilestf2 <> 0
sleep 1
$lock2 = $lock2 + 1


sleep 5

$whilestf2 = setfocus ($nomdelafenetre2)
LOOP
? "Prend la main sur la fenêtre $nomdelafenetre2 réussi"

SendKeys ("n")
? "Répond 'Ne pas lancer la mise à jour"

;Prend la main sur une fenêtre
$nomdelafenetre = "Luke Filewalker"
$whilestf = 1
$lock = 1
WHILE $whilestf <> 0
sleep 1
$lock = $lock + 1
$whilestf = setfocus ($nomdelafenetre)
If $lock = 10
? "$nomdelafenetre n'est pas lancé."
$whilestf = 0
ENDIF

LOOP

IF $lock = 10
? "Fin de l'installation"
ELSE
? "Prend la main sur la fenêtre $nomdelafenetre réussi"
;Annulation le scanne des fichiers
SendKeys ("s")
? "Stop la mise à jour en cour"
sleep 5
? "Patienter 5 secondes"
SendKeys ("e")
? "Quitte le programme de mise à jour en cour"
ENDIF

;Prend la main sur une fenêtre
$nomdelafenetre = "readme.txt - Bloc-notes"
$whilestf = 1
$lock = 1
WHILE $whilestf <> 0
sleep 1
$lock = $lock + 1
$whilestf = setfocus ($nomdelafenetre)
If $lock = 10
? "$nomdelafenetre n'est pas lancé."
$whilestf = 0
ENDIF
LOOP
? "Prend la main sur la fenêtre $nomdelafenetre réussi"

Sendkeys ("{ALT}{F4}")

;effacement d'un dossier
$dossierasupprimer = $dossierprov
del $dossierasupprimer + "\*.*" /c /f /s
rd $dossierasupprimer /s
IF NOT EXIST ($dossierasupprimer)
? "Le dossier : " + $dossierasupprimer + " a été supprimé"
ELSE
? "Le dossier : " + $dossierasupprimer + " n'a pas été supprimé complétement"
ENDIF

GOTO "fin"

;label de fin avec erreurs
:finerreur
? "fin du script d'installation : erreur"
;Ouverture du fichier log pour signaler la présence d'erreurs
IF RedirectOutput($DossierDeLog + "ERREUR_" + @SCRIPTNAME +".txt") = 0
?? "Ouverture de erreur_" + @SCRIPTNAME + " à " + @TIME
? "le script d'installation à rencontrer des erreurs : consulter le fichier log :"
? $DossierDeLog + @SCRIPTNAME +".txt"
ENDIF
sleep 5

;label de fin sans erreurs
:fin
? "fin du script d'installation"

;annule la redirection vers un fichier
RedirectOutput("")

 

Vous pouvez poster vos commentaires sur mon blog : http://installation-silencieuse.blogspot.com