lundi 22 septembre 2008

Scripts d'installation silencieuseEmile Maurin 4.1 (Bibliothèque de composant CAO)

D'après le support téléphonique du CD d'installation de Emile Maurin 4.1 : il n'existe pas de witch pour une installation silencieuse de leur CD. J'ai cependant trouvé une solution en KIXtart.

Voici un script qui permet d'installer Emile Maurin 4.1 sans assistance en Kixtart.

Principe

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

emaurin41.7z contient les fichiers du CD d'installation compressés
install.bat : décrit ci-dessous
emaurin41.kix : décrit ci-dessous
ShellCmd.udf : fonction Kixtart pour lancer des lignes de commande


Pour installer Emile Maurin 4.1 de manière silencieuse : double cliquer sur install.bat

Détail des scripts nécessaires

Contenu du fichier install.bat

Prompt
cls

@echo ........................
@echo INSTALLATION DE Emile
@echo JEAN-RENE DANIS 01/10/08
@echo ........................


kix32 emaurin41.kix


Contenu du emaurin41.kix (télécharger ce script en pdf couleur ici)

;installation de Emile Maurin 4.1 à partir du fichier emaurin41.7z
;JEAN-RENE DANIS 26-09-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\emaurin41'
;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

;Chargement d'une fonction : ShellCMD
;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 = "ShellCmd.udf"
IF $existShellCMD = "exist"
? "La fonction " + $emplacementfonction + " a déjà été chargée"
ELSE
IF EXIST ($emplacementfonction)
CALL $emplacementfonction
$existShellCMD = "exist"
? "La fonction " + $emplacementfonction + " a été chargée"
ELSE
? "La fonction " + $emplacementfonction + " n'a pas été trouvée"
ENDIF
ENDIF

;determine le dossier "program files 32 bits" en fonction de l'architecture du systeme d'exploitation
IF @ONWOW64 = 1
$progx86 = "%SYSTEMDrive%\Program Files (x86)"
ELSE
$progx86 = "%SYSTEMDrive%\Program Files"
ENDIF
? "Dossier d'installation des programme 32bits :" + $progx86

;creation du dossier de destination
IF NOT EXIST ($dossierprov)
MD $dossierprov
? "Le dossier : " + $dossierprov + " a été créé."
ELSE
? "Le dossier : " + $dossierprov + " existe déjà."
ENDIF

?"Décompression du fichier *.7z"?
$cmd_sei = '"'+$SEI_7Z+'\7z.exe" x -o' + $dossierprov + ' emaurin41.7z'
? $cmd_sei
$codrec = shellcmd('"$cmd_sei"',0)
IF $codrec <> 0
? "Erreur n° " + $codrec
GOTO "finerreur"
ENDIF

?"Lancement de la commande d'installation sans switch puisqu'il n'en n'existe pas."?
cd $dossierprov + "\emaurin41\"
$cmd_sei = 'start "emaurin" /D ' + $dossierprov + '\emaurin41\ psol_workstation.exe'
? $cmd_sei
$codrec = shellcmd('"$cmd_sei"',0)
IF $codrec <> 0
? "Erreur n° " + $codrec
GOTO "finerreur"
ENDIF

? 'Prend la main sur la fenêtre "Setup CADENAS PARTsolutions - V 8.1.07a"' ?
$whilestf = 1
$lock = 1
WHILE $whilestf <> 0
? "essai n°" + $lock
sleep 5
$lock = $lock + 1
$whilestf = setfocus ("Setup CADENAS PARTsolutions - V 8.1.07a")
LOOP

sleep 5
SendKeys ("s")
sleep 5
SendKeys ("{ENTER}")
sleep 5
SendKeys ("s")
sleep 10
SendKeys ("s")

? "Recherche du fichier : " + $progx86 +"\cadenas\partsolutions\data\23d-libs\pre_groupe_maurin\installhistory.cfg"
? "C'est le dernier fichier installé."?
$whilestf = 1
$lock = 1
WHILE $whilestf <> 0
? "Patienter quelques minutes (essai n°" + $lock +")"
sleep 10
$lock = $lock + 1
if exist ($progx86 + "\cadenas\partsolutions\data\23d-libs\pre_groupe_maurin\installhistory.cfg")
$whilestf = 0
endif
LOOP
? "le fichier a été trouvé, patienter 15 secondes..."
sleep 15

setfocus ("Setup CADENAS PARTsolutions - V 8.1.07a")

;ferme la fenêtre en appuyant sur "Entrer" tant que la fenêtre est ouverte...
WHILE $whilestf = 0
? "num :" + $lock
? "whilestf :" + $whilestf
sleep 5
$lock = $lock + 1
SendKeys ("{ENTER}")
$whilestf = setfocus ("Setup CADENAS PARTsolutions - V 8.1.07a")
LOOP
? "whilestf de sortie loop:" + $whilestf

;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"

Aucun commentaire: