Faire cliquer Autoit sur le bouton Installer du logiciel Java
Venky
-
Venky -
Venky -
Bonjour à tous,
je débute tout juste dans le scripting et l'utilisation d'Autoit, ce qui me pousse donc à vous solliciter.
En effet, mon but est d'automatiser des installations de logiciel que je suis regulièrement amener à faire, et en l'occurence, j'essaie d'automatiser l'installation de Java.
J'ai commencé à écrire ceci :
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.14.2
Author: ASM
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
;Application nécéssitant les droits d'admin
#RequireAdmin
;Affichage d’une infobulle d’information
Traytip("Installation Java","Debut de l'installation Java",1000)
;Pause de 3 secondes (pour les PC lents)
Sleep(3000)
;Lancement du setup
ShellExecute("JavaSetup8u111.exe")
;Automatisation des clics
AutoItSetOption('MouseCoordMode',0)
;Attente de l'affichage de la fenêtre d'installation
WinWait("Configuration Java - Bienvenue", "Bienvenue dans Java")
WinWaitActive("Configuration Java - Bienvenue", "Bienvenue dans Java")
Je voudrais savoir comment faire pour que le pointeur de la souris aille cliquer sur le bouton "installer >", mais sans utiliser Autoit Window Info avec les coordonnées, etc. Je voudrais rédiger une ligne de code pour que le pointeur vise le bouton et non les coordonnées d'une position. Je ne sais pas si je m'exprime bien.
Et dans la même logique, si par exemple il faut accepter des conditions d'utilisation en cochant la ligne "Je comprends...", et que c'est "Je refuse..." qui est coché par défaut, comment je peux faire pour que le pointeur aille cocher "Je comprends..." (donc en visant le bouton et non les coordonnées) ?
Est-ce que quelqu'un pourrait m'aider à faire cela et m'expliquer la logique du truc, s'il vous plait ?
Merci d'avance.
je débute tout juste dans le scripting et l'utilisation d'Autoit, ce qui me pousse donc à vous solliciter.
En effet, mon but est d'automatiser des installations de logiciel que je suis regulièrement amener à faire, et en l'occurence, j'essaie d'automatiser l'installation de Java.
J'ai commencé à écrire ceci :
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.14.2
Author: ASM
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
;Application nécéssitant les droits d'admin
#RequireAdmin
;Affichage d’une infobulle d’information
Traytip("Installation Java","Debut de l'installation Java",1000)
;Pause de 3 secondes (pour les PC lents)
Sleep(3000)
;Lancement du setup
ShellExecute("JavaSetup8u111.exe")
;Automatisation des clics
AutoItSetOption('MouseCoordMode',0)
;Attente de l'affichage de la fenêtre d'installation
WinWait("Configuration Java - Bienvenue", "Bienvenue dans Java")
WinWaitActive("Configuration Java - Bienvenue", "Bienvenue dans Java")
Je voudrais savoir comment faire pour que le pointeur de la souris aille cliquer sur le bouton "installer >", mais sans utiliser Autoit Window Info avec les coordonnées, etc. Je voudrais rédiger une ligne de code pour que le pointeur vise le bouton et non les coordonnées d'une position. Je ne sais pas si je m'exprime bien.
Et dans la même logique, si par exemple il faut accepter des conditions d'utilisation en cochant la ligne "Je comprends...", et que c'est "Je refuse..." qui est coché par défaut, comment je peux faire pour que le pointeur aille cocher "Je comprends..." (donc en visant le bouton et non les coordonnées) ?
Est-ce que quelqu'un pourrait m'aider à faire cela et m'expliquer la logique du truc, s'il vous plait ?
Merci d'avance.
A voir également:
- Faire cliquer Autoit sur le bouton Installer du logiciel Java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel - Télécharger - Jeux vidéo
- Money logiciel - Télécharger - Comptabilité & Facturation
- Logiciel - Guide
- Installer chromecast sur tv - Guide
3 réponses
Bonjour
Dans autoit Window info tu as d'autres informations (bien plus précieuses..) que les coordonnées du bouton. (surtout que les coordoonnées peuvent changer en fonction des pc.. de leur résolution....... )
Bref.. tu as, lorsque c'est disponible, l' identifiant du control.
C'est en utiisant cela directement que tu peux manipuler les éléments de tes fenêtres sans avoir à simuler une "souris"
voir ici : https://www.autoitscript.fr/autoit3/docs/intro/controls.htm
Une fois l'ID trouvé ... tu pourra "cliquer" dessus. Pour ça il existe la fonction "ControlClick"
https://www.autoitscript.fr/autoit3/docs/functions/ControlClick.htm
Dans autoit Window info tu as d'autres informations (bien plus précieuses..) que les coordonnées du bouton. (surtout que les coordoonnées peuvent changer en fonction des pc.. de leur résolution....... )
Bref.. tu as, lorsque c'est disponible, l' identifiant du control.
C'est en utiisant cela directement que tu peux manipuler les éléments de tes fenêtres sans avoir à simuler une "souris"
voir ici : https://www.autoitscript.fr/autoit3/docs/intro/controls.htm
Une fois l'ID trouvé ... tu pourra "cliquer" dessus. Pour ça il existe la fonction "ControlClick"
https://www.autoitscript.fr/autoit3/docs/functions/ControlClick.htm
Salut.
+1 Jordane :)
Par contre, c'est un poil plus compliqué.
Il faut d'abord lancer JAVA et rendre la fenêtre active. (winwaitactive, etc)
Mais dans son cas - Java - il y a plus simple : l'installation silencieuse.
Bref, on peut installer java sliencieusement, via une ligne de commandes dans CMD.
Par contre, sache qu'en AutoIt, on peut lancer des lignes de commandes.
Admettons que tu télécharges java 32bits et que tu le nommes java32.exe
La ligne de commande est :
Simple non ?
Ce que je te propose, dans un script AutoIt :
- Tu télécharges la version java souhaitée (32 et/ou 64 bits) avec InetGet
- Tu installes ta version de java
- Une fois l'installation finie, un message de fin apparait. Je t'aurais bien parlé de barre de progression, mais vu que tu débutes, autant faire simple.
Information :
Le lien de téléchargement de java change souvent.
Pour récupérer le lien directement, je te conseille :
----------------
Autre solution : faire une interface graphique avec deux boutons
Le bouton 2 n'a nullement besoin de télécharger le java si tu l'as déjà téléchargé.
Bref, si tu veux, je te fais un script commenté, afin que tu comprennes ;)
++
+1 Jordane :)
Par contre, c'est un poil plus compliqué.
Il faut d'abord lancer JAVA et rendre la fenêtre active. (winwaitactive, etc)
Mais dans son cas - Java - il y a plus simple : l'installation silencieuse.
Et dans la même logique, si par exemple il faut accepter des conditions d'utilisation en cochant la ligne "Je comprends...", et que c'est "Je refuse..." qui est coché par défaut, comment je peux faire pour que le pointeur aille cocher "Je comprends..." (donc en visant le bouton et non les coordonnées) ?Justement, avec l'installation silencieuse, il installe UNIQUEMENT java sans confirmation. ;)
Bref, on peut installer java sliencieusement, via une ligne de commandes dans CMD.
Par contre, sache qu'en AutoIt, on peut lancer des lignes de commandes.
Admettons que tu télécharges java 32bits et que tu le nommes java32.exe
La ligne de commande est :
java32.exe /s
Simple non ?
Ce que je te propose, dans un script AutoIt :
- Tu télécharges la version java souhaitée (32 et/ou 64 bits) avec InetGet
- Tu installes ta version de java
- Une fois l'installation finie, un message de fin apparait. Je t'aurais bien parlé de barre de progression, mais vu que tu débutes, autant faire simple.
Information :
Le lien de téléchargement de java change souvent.
Pour récupérer le lien directement, je te conseille :
- de récupérer le code source de ce lien : https://www.java.com/fr/download/manual.jsp
- dans une boucle for next, de chercher la ligne où se trouve le lien de téléchargement
- de déclarer la ligne dans une variable.
----------------
Autre solution : faire une interface graphique avec deux boutons
- bouton 1 : télécharger java
- bouton 2 : installer java (via un glisser déposer)
Le bouton 2 n'a nullement besoin de télécharger le java si tu l'as déjà téléchargé.
Bref, si tu veux, je te fais un script commenté, afin que tu comprennes ;)
++
Yo les gins.
J'ai crée deux scripts (pour java 32 et 64 bits) afin de télécharger et installer java de façon silencieuse.
J'ai tout de même ajouter un message de notification. Facilement supprimable, si on n'en veut pas.
Le script pour télécharger java 32 bits
Le script pour télécharger java 64 bits
Voilà :)
++
J'ai crée deux scripts (pour java 32 et 64 bits) afin de télécharger et installer java de façon silencieuse.
J'ai tout de même ajouter un message de notification. Facilement supprimable, si on n'en veut pas.
Le script pour télécharger java 32 bits
#include <file.au3>
#include <inet.au3>
$DossTmp = @HomeDrive & "\InstJava"
DirRemove($DossTmp, 1)
DirCreate($DossTmp)
; --------------------------------------------------------------------------
TrayTip("", "Récupération du lien de téléchargement (Java 32 bits)", 2.5, 1)
; --------------------------------------------------------------------------
$lien = "https://www.java.com/fr/download/manual.jsp"
$lienjava = ""
$cs = $DossTmp & "\cs.txt"
$fichier = $DossTmp & "\java32.exe"
$cstmp = FileOpen($cs, 2)
FileWrite($cstmp, _INetGetSource($lien))
FileClose($cstmp)
For $a = _FileCountLines($cs) To 1 Step -1
If StringInStr(FileReadLine($cs, $a), 'hors ligne') And Not StringInStr(FileReadLine($cs, $a), '64bits') Then $lienjava = FileReadLine($cs, $a)
Next
$lienjava = _FindBetweenString($lienjava, 'href="', '">')
; --------------------------------------------------------------------------
TrayTip("", "Téléchargement en cours (Java 32 bits)", 2.5, 1)
; --------------------------------------------------------------------------
$myDL = InetGet($lienjava, $fichier, 1, 1)
Do
Sleep(250)
Until InetGetInfo($myDL, 2) ; Check if the download is complete.
InetClose($myDL) ; Close the handle to release resources.
TrayTip("", "Installation en cours (Java 32 bits)", 2.5, 1)
$command = $fichier & ' /s & exit'
RunWait(@ComSpec & " /c " & $command, "", @SW_HIDE)
; --------------------------------------------------------------------------
TrayTip("", "Fin de l'installation (Java 32 bits)", 2.5, 1)
; --------------------------------------------------------------------------
Func _FindBetweenString($Line, $char1, $char2)
Local $part1 = StringRegExpReplace($Line, "^.*" & $char1, "")
Local $Term = StringRegExpReplace($part1, "\" & $char2 & ".*", "")
Return SetExtended(1, $Term)
EndFunc ;==>_FindBetweenString
Le script pour télécharger java 64 bits
#include <file.au3>
#include <inet.au3>
$DossTmp = @HomeDrive & "\InstJava"
DirRemove($DossTmp, 1)
DirCreate($DossTmp)
; --------------------------------------------------------------------------
TrayTip("", "Récupération du lien de téléchargement (Java 64 bits)", 2.5, 1)
; --------------------------------------------------------------------------
$lien = "https://www.java.com/fr/download/manual.jsp"
$lienjava = ""
$cs = $DossTmp & "\cs.txt"
$fichier = $DossTmp & "\java64.exe"
$cstmp = FileOpen($cs, 2)
FileWrite($cstmp, _INetGetSource($lien))
FileClose($cstmp)
For $a = _FileCountLines($cs) To 1 Step -1
If StringInStr(FileReadLine($cs, $a), 'hors ligne') And StringInStr(FileReadLine($cs, $a), '64 bits') Then $lienjava = FileReadLine($cs, $a-1)
Next
$lienjava = _FindBetweenString($lienjava, 'href="', '">')
; --------------------------------------------------------------------------
TrayTip("", "Téléchargement en cours (Java 64 bits)", 2.5, 1)
; --------------------------------------------------------------------------
$myDL = InetGet($lienjava, $fichier, 1, 1)
Do
Sleep(250)
Until InetGetInfo($myDL, 2) ; Check if the download is complete.
InetClose($myDL) ; Close the handle to release resources.
TrayTip("", "Installation en cours (Java 64 bits)", 2.5, 1)
$command = $fichier & ' /s & exit'
RunWait(@ComSpec & " /c " & $command, "", @SW_HIDE)
; --------------------------------------------------------------------------
TrayTip("", "Fin de l'installation (Java 64 bits)", 2.5, 1)
; --------------------------------------------------------------------------
Func _FindBetweenString($Line, $char1, $char2)
Local $part1 = StringRegExpReplace($Line, "^.*" & $char1, "")
Local $Term = StringRegExpReplace($part1, "\" & $char2 & ".*", "")
Return SetExtended(1, $Term)
EndFunc ;==>_FindBetweenString
Voilà :)
++