;installation de ActivSync 4.5 à partir du fichier setup.msi
;Installation uniquement sur des ordinateurs dont le numéro de serie fait parti de la liste elligible.txt
;Installation uniquement sur des ordinateurs dont le systeme d'exploitation est Windows XP
;JEAN-RENE DANIS 14/11/08
;Liste des variable(s)
;variable qui définit l'emplacement du fichier log
$DossierDeLog = "%systemdrive%\install\log\"
;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
cd @SCRIPTDIR\
;Chargement d'une fonction : WMIQuery
;Ce script charge une fonction sauf si elle a déjà été chargée.
;Verifier que le nom de la fonction à chargée est bien présent dans
;le nom de la variable $exist...des 2ieme et 7ieme lignes ci-dessou
$emplacementfonction = "WMIQuery.udf"
IF $existWMIQuery = "exist"
? "La fonction " + $emplacementfonction + " a déjà été chargée"
ELSE
IF EXIST ($emplacementfonction)
CALL $emplacementfonction
$existWMIQuery = "exist"
? "La fonction " + $emplacementfonction + " a été chargée"
ELSE
? "La fonction " + $emplacementfonction + " n'a pas été trouvée"
ENDIF
ENDIF
;Verifie que le systeme d'exploitation est bien Windows XP
$TableauDeValeur = @PRODUCTTYPE,''
$ResultatRecherche = ASCAN($TableauDeValeur, 'Windows XP', , , 1)
; Retourne -1 si "Windows XP" n'exite pas dans @PRODUCTTYPE
IF $ResultatRecherche = -1
? "la chaine de caractère 'Windows XP' n'extiste pas dans la '@PRODUCTTYPE' "
GOTO "finerreur"
ENDIF
;verifie que le numéro de série de l'ordinateur fait parti de la liste elligible.txt
$ServiceTag = WMIQuery("SerialNumber","Win32_SystemEnclosure")[0]
? "Le numéro de série de l'ordnateur est : [$ServiceTag]"
? "Parcours de la liste des ordinateurs elligibles"
$scrresult = 0
IF Open(3, "elligible.txt") = 0
$x = ReadLine(3)
;parcours des lignes
WHILE @ERROR = 0
; compare la ligne avec le serial number du PC
if INSTR ($x, $ServiceTag)
$scrresult = 1
endif
$x = ReadLine(3)
LOOP
Close (3)
ELSE
? "Impossible d'ouvrir le fichier, code d'erreur : [" + @ERROR + "]"
GOTO "finerreur"
ENDIF
;affiche le résultat de la recherche
IF $scrresult = 1
?"L'ordinateur fait parti de la liste, l'installation peut commencer."
ELSE
?"L'ordinateur ne fait pas parti de la liste."
GOTO "finerreur"
ENDIF
;Installation du programme
$commande = 'msiexec /i setup.msi /passive /norestart'
? $commande
shell '%COMSPEC% /c ' + $commande
IF @ERROR <> 0
? "Erreur n° " + @ERROR
GOTO "finerreur"
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("")
|