[..] install silencieuse d'adobe reader 10 (premier script)

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Piloupilou
Niveau 2
Niveau 2
Messages : 27
Enregistré le : sam. 26 févr. 2011 13:42
Status : Hors ligne

[..] install silencieuse d'adobe reader 10 (premier script)

#1

Message par Piloupilou »

Bonjour, je me suis inscrit il y a environ deux semaines, et malheureusement j'avance à tres petit pas dans l'art de la programmation ... mais bon au moins j'essaie

Voici mon premier script, qui installe silencieusement Adobe Reader 10.
Si vous voyez des erreurs de méthodes mais aussi de forme, de mauvaise habitudes à ne pas prendre en programmation, je suis à l'écoute.

Je vous remercie par avance

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------

    AutoIt Version: 3.3.6.1
    Author:         myName

    Script Function:
    Template AutoIt script.

#ce ----------------------------------------------------------------------------

; Script Start - Add your code below here

$repertoireinstall = "c:\installtemp" ; le répertoire que je vais creer pour copier le fichier d'install
$setup_a_installer = "AdbeRdr1001_fr_FR.exe" ; le fichier a installer
$repertoireserveur = "\\XXXX\application\adobe10" ; le chemin du fichier a copier depuis le serveur
$fichierdelog = $repertoireinstall & "\adobe.log" ; un fichier adobe.log placé dans le dossier d'install déclaré plus haut


;je créé d'abord mon dossier d'install et le fichier de log en ecrivant l'heure et la date du jour
DirCreate($repertoireinstall)
FileOpen($fichierdelog)
FileWrite($fichierdelog, "creation du log le : " & @MDAY & "/" & @MON & " il est " & @HOUR & ":" & @MIN & @CRLF)

; si le fichier n'existe pas sur le serveur (que le serveur n'est pas joignable) on sort du script, sinon on inscrit dans le log : le fichier a ete trouvé ...
If FileExists("\\XXXX\application\adobe10\AdbeRdr1001_fr_FR.exe") <> 1 Then
    FileWrite($fichierdelog, "le fichier est introuvable" & @CRLF)
    Exit
Else
    FileWrite($fichierdelog, "- le fichier a été trouvé la copie peut commencer" & @CRLF)
EndIf

; copie du fichier dans le repertoire d'installation
FileCopy("\\XXXX\application\adobe10\" & $setup_a_installer, $repertoireinstall)

;tant que le fichier n'existe pas dans le nouveau répertoire, on attend 5 secondes, au bout de 6 essai (8 - 2) on sort du script
$compteurdesommeil = 2
While FileExists($repertoireinstall & "\" & $setup_a_installer) <> 1
    If $compteurdesommeil < 8 Then
        FileWrite($fichierdelog, "le fichier ne s'est pas encore copié " & $compteurdesommeil & " ° essai dans 5 secondes" & @CRLF)
        Sleep(5000)
        $compteurdesommeil = $compteurdesommeil + 1
    Else
        FileWrite($fichierdelog, "- le fichier ne se copie toujours pas, annulation de l'installation" & @CRLF)
        Exit
    EndIf
WEnd

;a ce stade si on est pas sorti du script, c'est que le fichier existe, donc la copie a fonctionnée
FileWrite($fichierdelog, "- fichier copié" & @CRLF)


;lancer le setup avec l'argument silentieux et incrire dans le log: l'installation démmarre
Run("c:\installtemp\AdbeRdr1001_fr_FR.exe /msi EULA_ACCEPT=YES /qn")
FileWrite($fichierdelog, "- l'installation démarre" & @CRLF)

; tant que le dossier adobe10 n'existe pas dans program files je considere qu'il n'est pas installé et dors 10secondes,si au bout de 10 fois ca marche pas, je sorts du script
$compteurdesommeil = 2
While FileExists("C:\Program Files\Adobe\Reader 10.0") <> 1
    If $compteurdesommeil < 12 Then
        FileWrite($fichierdelog, "- le dossier n'existe pas encore," & $compteurdesommeil & "° essai dans 10 secondes" & @CRLF)
        Sleep(10000)
        $compteurdesommeil = $compteurdesommeil + 1
    Else
        FileWrite($fichierdelog, "- le dossier ne s'installe toujours pas, annulation de l'installation" & @CRLF)
        Exit
    EndIf
WEnd

; si le dossier existe je considere qu'il est installé, et j'écris la date et l'heure
If FileExists("C:\Program Files\Adobe\Reader 10.0") = 1 Then
    FileWrite($fichierdelog, "- le dossier existe, adobe est surement installé" & @CRLF)
    FileWrite($fichierdelog, "on est le : " & @MDAY & "/" & @MON & " il est " & @HOUR & ":" & @MIN & @CRLF)
EndIf
 
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] install silencieuse d'adobe reader 10 (premier scri

#2

Message par sksbir »

bonjour

Alors, coté positifs :
- tu structures bien tes scripts
- tu donnes des noms pertinents aux variables.

coté négatif :
- tu définis la variable $setup_a_installer, et plus loin, tu utilises AdbeRdr1001_fr_FR.exe au lieu de la variable
De plus, déclarer des constantes ("const") , c'est mieux quand ta variable est en fait une constante.
- Tu fais une erreur de logique sur la commande "filecopy" : le script s'arrête sur l'exécution de cette commande tant que la copie n'est pas faite, et quand le script reprend, soit la commande a réussie, soit elle a échoué. ça n'est donc pas la peine de "surveiller" ce que fait filecopy dans les lignes de codes qui suivent : à ce moment là, filecopy a fini.

Code : Tout sélectionner

$TESTCOPY=filecopy....
if $TESTCOPY=1 then
; ok...
else
; ..pb
endif

mais surtout, c'est très compliqué de faire comme tu fais, ou alors, tu cherches à atteindre un objectif que tu n'as pas décrit.

A la base, l'installation , c'est

Code : Tout sélectionner

$TESTEXEC=Runwait("\\XXXX\application\adobe10\AdbeRdr1001_fr_FR.exe /msi EULA_ACCEPT=YES /passive")
if $TESTEXEC <> 0 then
;... erreurs 
else
; .... ok
endif
(/passive, c'est mieux : l'installation est autonome, mais PAS silencieuse... Je précise que je n'ai pas testé, j'ai juste repris les arguments d'installation que tu utilises dans ton script )

ps: le dossier existe, adobe est surement installé .. pourquoi "surement" ? :lol:
Avatar du membre
eln
Niveau 6
Niveau 6
Messages : 202
Enregistré le : sam. 28 juil. 2007 12:54
Status : Hors ligne

Re: [..] install silencieuse d'adobe reader 10 (premier scri

#3

Message par eln »

Piloupilou a écrit :Bonjour, je me suis inscrit il y a environ deux semaines, et malheureusement j'avance à tres petit pas dans l'art de la programmation ... mais bon au moins j'essaie

Voici mon premier script, qui installe silencieusement Adobe Reader 10.
Si vous voyez des erreurs de méthodes mais aussi de forme, de mauvaise habitudes à ne pas prendre en programmation, je suis à l'écoute.
Bonjour,

Je pratique les installations silencieuses par rapport au travail et j'avoue que j'utilise Autoit quand vraiment je ne peux pas faire autrement (je parle du Suivant - Suivant - .... - Terminer). Je vous conseille d'utiliser les paramètres d'installation silencieuse des programmes quand ils existent.
Dans le cas d'Adobe Reader 10, il existe un outil développé par Adobe : Adobe Customization Wizard X. C'est fait pour ça et il le fait très bien !
Débutant, pas taper !
Piloupilou
Niveau 2
Niveau 2
Messages : 27
Enregistré le : sam. 26 févr. 2011 13:42
Status : Hors ligne

Re: [..] install silencieuse d'adobe reader 10 (premier scri

#4

Message par Piloupilou »

merci a vous, j'ai noté les remarques

à suivre :)
Piloupilou
Niveau 2
Niveau 2
Messages : 27
Enregistré le : sam. 26 févr. 2011 13:42
Status : Hors ligne

Re: [..] install silencieuse d'adobe reader 10 (premier scri

#5

Message par Piloupilou »

ps: le dossier existe, adobe est surement installé .. pourquoi "surement" ? :lol:
parceque je ne suis pas sur a 100% que l'existencedu dossier program files de adobe X signifie qu'il soit installé

mais c'est vrai que "surement " ca fait pas tres pro :)

(au fait dans ta remarque, tu veux dire que quand le script passe a l'instruction apres filecopy, cela signifie que filecopy a terminé ?)
Avatar du membre
sksbir
Niveau 7
Niveau 7
Messages : 384
Enregistré le : lun. 26 oct. 2009 17:57
Localisation : Lyon
Status : Hors ligne

Re: [..] install silencieuse d'adobe reader 10 (premier scri

#6

Message par sksbir »

Piloupilou a écrit :
(au fait dans ta remarque, tu veux dire que quand le script passe a l'instruction apres filecopy, cela signifie que filecopy a terminé ?)
Exactement :)
Répondre