Page 1 sur 2

[R] Installation de Logiciels

Posté : ven. 30 mai 2014 16:50
par T123x3
Bonjour a tous!!!

Je suis en stage dans un service informatique et on m'a demandé de developper un système (on va dire ça comme ça :D ) où on peut installer des logiciels silencieusement et rapidement. Cela fait que quelque jour que je connais AutoIt, donc je connaissais pas du tout et apparement cela peut resoudre mes problème.

En regardant par-çi parl-là, j'ai pensé de faire un interface où qu'il y a:
-plusieurs checkbox (qui indique les noms de logiciel)
-un bouton "installer
-Quand je coche les cases des logiciels n°1, n°5, N°3 et que je clic sur le bouton « Installer », cela doit lancer les scripts des logiciels correspondants

J'ai essayée d'écrire un bout de code (avec aucune compétence à ce language) mais le probléme est que quand je coche plusieurs logiciels, ils s'installent en même temps, j'aimerai qu'ils s'installent un par un (chacun son tour) mais je ne sais pas comment faire :(

Merci d'avance pour votre aide!!!

Re: [..] Installation de Logiciels

Posté : ven. 30 mai 2014 17:10
par silvere
Regarde dans l'aide du coté des fonction Control : ControlClick...
Pour une installation silencieusement il faut que la fenêtre soit invisible donc la regarde la fonction WinSetState
Ce n'est que des pistes car je n'ai jamais fait ce genre de programmes.
Pour l'installation successive, donne nous ton code pour voir ce qui ne vas pas.

Re: [..] Installation de Logiciels

Posté : ven. 30 mai 2014 20:09
par Bayo
J'ai fait un programme un peu comme ça, qui passe différent nettoyeur et antivirus pour dévéroler des PCs.

en gros dans le case de ton bouton tu fait des "si la case est coché faire tel fonction" (une fonction par logiciel) et dans les fonctions faut jouer sur les attentes de fenêtre (winwait) les ControlClick et surtout pendant les périodes d'installation des

Code : Tout sélectionner

While WinExists("fenetre")
    Sleep(2000) 
WEnd
 
ou alors par exemple pour attendre le bouton terminer en fin d'installation par exemple tu peux faire

Code : Tout sélectionner

While Not ControlGetHandle("", "", "Terminer")
        Sleep(100)
    WEnd
ControlClick("", "", 'Terminer')
Voila j'espere que ça va t'aider.

Re: [..] Installation de Logiciels

Posté : ven. 30 mai 2014 20:31
par silvere
J'aurais du mal a t'aider si tu me donne pas ton code :?

Re: [..] Installation de Logiciels

Posté : ven. 30 mai 2014 22:15
par jguinch
Tu peux peut-être t'inspirer d'un truc existant ?
http://www.autoitscript.com/forum/topic ... installer/ (j'ai pas testé, mais au vu du screenshot, ça pourrait correspondre à ton besoin)

Edit : Message déplacé dans Aide générale

Re: [..] Installation de Logiciels

Posté : mar. 03 juin 2014 08:42
par T123x3
Merci de m'avoir répondre!!! C'est sympa :D

Sinon, j'ai réecris du bout de code que j'ai trouvé par-çi par-là donc je suis pas sûr que c'est correct!!!!
je vous donne mon code!!!

[spoiler

Code : Tout sélectionner

=]#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
Opt("GUIOnEventMode", 1)

;Declaration de l'array principale!!!
Dim $a_installer[5][2]=[["", ""], ["0", "isetup.exe"], ["0", "launch4j.exe"], ["0", "Grep_setup.exe"], ["0", "java.exe"]]

; l'interface graphique
$gui = GUICreate(" Installateur ", 751, 666, 300, 37)
GUISetState (@SW_SHOW)
GUISetIcon("Data\autorun.ico")
GUISetOnEvent($GUI_EVENT_CLOSE, "quitter")

;Placement et nom des boutons "Installer", "Quitter"
$installer = GUICtrlCreateButton(" Installer ", 664, 632, 75, 25, 0)
GUICtrlSetOnEvent( -1,"install")
$quitter = GUICtrlCreateButton(" Quitter ", 576, 632, 75, 25, 0)
GUICtrlSetOnEvent( -1,"quitter")

;Placement et nom de la checkbox (cases à cocher) pour tout selectionner
$checkall = GUICtrlCreateCheckbox("Tout cocher / Tout décoher", 104, 584, 177, 17)
GUICtrlSetOnEvent( -1,"allcheck")

;Placement et nom des CheckBox (cases à cocher) pour chaque logiciels
$Group1 = GUICtrlCreateGroup("Programmation", 10, 10, 150, 220 )
$check1 = GUICtrlCreateCheckbox("Inno Setup", 20, 25, 120, 20)
GUICtrlSetOnEvent( -1,"checkbox")
$check2 = GUICtrlCreateCheckbox("Launch4j", 20, 45, 120, 20)
GUICtrlSetOnEvent( -1,"checkbox")
$check3 = GUICtrlCreateCheckbox("Grep", 20, 65, 120, 20 )
GUICtrlSetOnEvent( -1,"checkbox")
$check4 = GUICtrlCreateCheckbox("Java", 20, 85, 120, 20 )
GUICtrlSetOnEvent( -1,"checkbox")
GUICtrlCreateGroup("", -99, -99, 1, 1)
GuiSetState ( )

While 1;Boucle infinie
    Sleep(100)
WEnd


;La fonction "checkbox"
Func checkbox()
      Switch @GUI_CtrlId
         Case $check1
            If _Ischecked($check1) then
               $a_installer[1][0] = "1"
            Else
               $a_installer[1][0] = "0"
            EndIf
         Case $check2
            If _Ischecked($check2) then
               $a_installer[2][0] = "1"
            Else
               $a_installer[2][0] = "0"
            EndIf
         Case $check3
            If _Ischecked($check3) then
               $a_installer[3][0] = "1"
            Else
               $a_installer[3][0] = "0"
            EndIf
         Case $check4
            If _Ischecked($check4) then
               $a_installer[4][0] = "1"
            Else
               $a_installer[4][0] = "0"
            EndIf

      EndSwitch
 EndFunc


 ;La fonction "allcheck"
 Func allcheck()
    If _Ischecked($checkall) Then
        Local $i
        GUICtrlSetState($check1,$GUI_CHECKED)
        GUICtrlSetState($check2,$GUI_CHECKED)
        GUICtrlSetState($check3,$GUI_CHECKED)
        GUICtrlSetState($check4,$GUI_CHECKED)

         For $i = 1 to Ubound($a_installer) - 1
            $a_installer[$i][0] = "1"
         Next
      Else
        Local $i
        GUICtrlSetState($check1,$GUI_UNCHECKED)
        GUICtrlSetState($check2,$GUI_UNCHECKED)
        GUICtrlSetState($check3,$GUI_UNCHECKED)
        GUICtrlSetState($check4,$GUI_UNCHECKED)

        For $i = 1 to Ubound($a_installer) - 1
            $a_installer[$i][0] = "0"
        Next

    EndIf
 EndFunc


;La fonction "install"
Func install()
    Local $i
    For $i = 1 to Ubound($a_installer)-1
        If $a_installer[$i][0] = "1" then
            Run( @ScriptDir &"\installation\"&$a_installer[$i][1])
            Sleep(1000)
        
       EndIf

    Next
 EndFunc


 Func quitter()
   Exit
EndFunc

Func _Ischecked($control)
    Return BitAND(GUICtrlRead($control), $GUI_CHECKED) = $GUI_CHECKED
EndFunc ;==>_IsChecked
Func _Ischecked2($control)
    Return BitAND(GUICtrlRead($control), $GUI_INDETERMINATE) = $GUI_INDETERMINATE
EndFunc ;==>_IsChecked

While 1
$msg = GUIGetMsg()
Select
Case $MSG = $GUI_EVENT_CLOSE
Exit
Case $MSG = $button_1

EndSelect
Wend
[/spoiler]


Merci d'avance!!!

Re: [..] Installation de Logiciels

Posté : ven. 06 juin 2014 10:03
par T123x3
T123x3 a écrit :Bonjour a tous!!!

Je suis en stage dans un service informatique et on m'a demandé de developper un système (on va dire ça comme ça :D ) où on peut installer des logiciels silencieusement et rapidement. Cela fait que quelque jour que je connais AutoIt, donc je connaissais pas du tout et apparement cela peut resoudre mes problème.

En regardant par-çi parl-là, j'ai pensé de faire un interface où qu'il y a:
-plusieurs checkbox (qui indique les noms de logiciel)
-un bouton "installer
-Quand je coche les cases des logiciels n°1, n°5, N°3 et que je clic sur le bouton « Installer », cela doit lancer les scripts des logiciels correspondants

J'ai essayée d'écrire un bout de code (avec aucune compétence à ce language) mais le probléme est que quand je coche plusieurs logiciels, ils s'installent en même temps, j'aimerai qu'ils s'installent un par un (chacun son tour) mais je ne sais pas comment faire :(

Merci d'avance pour votre aide!!!

Re: [..] Installation de Logiciels

Posté : ven. 06 juin 2014 10:07
par TommyDDR
un par un -> Remplacez Run par RunWait

Re: [..] Installation de Logiciels

Posté : ven. 06 juin 2014 10:12
par T123x3
Ca marche!!! merci!! :D

Re: [R] Installation de Logiciels

Posté : ven. 06 juin 2014 14:52
par T123x3
Salut!!!

Mon programme marche à merveille, c'est super mais j'ai toujours pas réglée a propos des installations silencieuses.
Parce que comme j'ai 40 logiciels, je vais pas tout taper à la main avec les ControlClick ou il y a un autre moyen plus rapide?? :?

Merci d'avance!!

Re: [R] Installation de Logiciels

Posté : ven. 06 juin 2014 15:19
par jguinch
Comme il a été dit et redit, il faut privilégier une installation silencieuse, plutôt qu'une automatisation par clics.
Pour ce faire, il faut s'appuyer sur les options d'installations prévues par les programmes d'installation, qui sont en général décrits sur le site de l'éditeur.
En général, c'est assez simple : il suffit de taper dans un moteur de recherche firefox silent install ou firefox install command line et on tombe sur la réponse.
Sinon, il y des sites spécialisés comme par exemple ITNinja/AppDeploy. J'aime bien aussi WPKG.

Du coup, il te suffira par exemple de lancer Firefox Setup 24.5.0esr.exe -ms pour installer Firefox sans aucune interaction, ou vlc-2.1.3-win32.exe /S pour VLC... chaque installeur ayant ses propres options d'installation.

Re: [R] Installation de Logiciels

Posté : ven. 06 juin 2014 15:41
par T123x3
Tout ça, c'est pas du script. l'installation silencieuse est utilisé grace a un shell.
E si c'est du shell, comment on le relie avec mon programme?

excuse-moi de te déranger jguinch, mais j'ai du mal à comprendre.

Re: [R] Installation de Logiciels

Posté : ven. 06 juin 2014 15:58
par jguinch
Par exemple, pour lancer l'installation de Firefox :
RunWait( "Firefox Setup 24.5.0esr.exe -ms")

Re: [R] Installation de Logiciels

Posté : ven. 06 juin 2014 16:08
par T123x3
Ca ne marche pas!!! :(

Mais, si je comprend bien, j'arrive à le lancer l'installation mais j'aimerai que l'utilisateur ne s'occupe pas des assistances pour l'installation du logiciel!

Re: [R] Installation de Logiciels

Posté : ven. 06 juin 2014 16:31
par jguinch
Si ça ne marche pas, merci de nous donner des infos : message d'erreur ? comportement ? Montre nous ton code et vérifie que l'exécutable que tu lances est bien présent.
Et arrête de mettre des points d'exclamation, on va se sentir agressés !

Re: [R] Installation de Logiciels

Posté : ven. 06 juin 2014 16:40
par T123x3
Excuse moi à propos des point d'exclamation, c'est un sorte de tic, j'aime bien en mettre. Ne vous sentez pas agressez, j'ai pris une mauvaise habitude.

voici mon code:
► Afficher le texte



Je remercie encore à TommyDDR pour m'avoir aidée pour ce code :D

Re: [R] Installation de Logiciels

Posté : ven. 06 juin 2014 17:32
par TommyDDR

Code : Tout sélectionner

RunWait( @ScriptDir &"\installation\" & $a_installer[$i][$j][$C_NOMEXE] & "-ms")
cela correspond à C:\xxxxxx\installation\firefox.exe-ms car vous n'avez pas mis d'espace !!!!!!!! :wink:
par contre il va falloir voir ce qu'est une boucle, là vous mettez en dur "-ms" cela veut dire que -ms va être envoyé en paramètre à CHACUNE des installation, or seule firefox comprendra " -ms", chaque installation est codée différemment, il faut donc préciser un à un les paramètres pour une installation silencieuse (et encore, certaines installations n'ont pas de mode silencieux).

Re: [R] Installation de Logiciels

Posté : mar. 10 juin 2014 10:07
par T123x3
Salut!

Désolé de pas vous avoir répondu, ce week-end, j'étais dans un endroit où internet n'existe pas (mais bon ça, c'est pas important :D)

Avec vos commentaires, je commence a comprend (par rapport au paramètre d'installation).

J'ai mis mon RunWait hors des boucles For, et j'ai vérifié les espaces :D
Mon programme se lance mais quand je coche Firefox et que je cliuer sur le bouton "installer", il ne se passe rien.

C'est normal???

Re: [R] Installation de Logiciels

Posté : mar. 10 juin 2014 10:33
par ZDS
Bonjour,

Pense à redonner ton code dans sa version la plus récente (en éditant ton premier message, pour éviter d'alourdir le topic et de pas savoir où trouver les infos pour les gens comme moi qui veulent donner un coup de main ^^).

A bientôt !

Re: [R] Installation de Logiciels

Posté : mar. 10 juin 2014 11:07
par T123x3
Salut


Voici mon code.

Et je crois m'apercevoir qu'il y a des erreurs, mais je ne sais pas comment les régler
J'espère que vous pourrez m'aidez, merci
► Afficher le texte