[..] Progression graphique + installation KB

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
toniino38
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 19 mai 2010 13:06
Status : Hors ligne

[..] Progression graphique + installation KB

#1

Message par toniino38 »

Bonjour à tous,

Pour vous situer un peu le contexte je cherche à créer un WSUS Offline très particulier concernant la messagerie Exchange Office 365 (les KB n'étant pas tous disponible sur le catalogue de WSUS). Pour cela il faut installer un certain nombre de MAJ spécifique pour Office 2007 et Office 2010.

Dans mon script j'aimerai :

1 : Vérification de la version d'Office (2007 ou 2010)

2 : Installation d'un lot de KB en paramètre /quiet en fonction de la version d'Office détectée.

3 : Afficher une barre de progression qui nous indique le pourcentage de l'avancement et le nom de chaque KB qu'il installe.

J'ai cherché un peu à droite à gauche je suis arriver à un script :
► Afficher le texte
Je suis relativement novice en développement. Si vous pouvez m'aider à avancer ce serait sympa, je bloque un peu sur la mise en place de la progression graphique et notamment l'affichage du nom du KB quand il l'installe.

Merci beaucoup :)
Modifié en dernier par toniino38 le sam. 09 juin 2012 14:18, modifié 1 fois.
toniino38
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 19 mai 2010 13:06
Status : Hors ligne

Re: [..] Progression graphique + installation KB

#2

Message par toniino38 »

J'ai avancé un peu sur la mise en forme graphique, je me suis aidé de Koda le rendu me va bien maintenant ce qu'il me manque c'est l'animation du progress et là je sèche vraiment !!
► Afficher le texte
Ce que j'aimerai faire c'est :
  • Suivant la version détectée 2007 ou 2010 j'aimerai lancer la liste des KB à installer (je ne sais pas où placer cette condition dans tous mes essais cela ne marchait pas).
  • Afficher dans le $Label2 le nom du KB qui est en cours d'installation.
  • Avoir une barre de progression qui progresse en fonction de l'installation de l'ensemble des MAJ (et non pas 0 to 100 à chaque MAJ).
Merci beaucoup à ceux qui veulent bien m'aider =)
Modifié en dernier par toniino38 le sam. 09 juin 2012 14:17, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Progression graphique + installation KB

#3

Message par mikell »

Au moins pour tester tu pourrais essayer ça :

Code : Tout sélectionner

$KB2289158 = "Microsoft Office 2007 Security Update\Office2007-kb2289158-fullfile-x86-glb.exe"
$btninstall = GUICtrlCreateButton("Installer", 210, 300, 80, 25)
et mettre ça dans le While

Code : Tout sélectionner

Case $btninstall
    Switch $versionoffice
        Case 2007
            GuiCtrlSetData($Label2, "Installation en cours : " & $KB2289158 & " ..."
            Run($KB2289158 & " /quiet")
        Case 2010
            ;....
    EndSwitch
Pour la progressbar, ça se calcule en faisant le % de fichier installé/taille totale avec un GuiCtrlSetData sur la progressbar... si tu n'as pas ces données, ça va être dur
Pourquoi ne pas laisser s'afficher la barre du fichier d'installation ?
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
toniino38
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 19 mai 2010 13:06
Status : Hors ligne

Re: [..] Progression graphique + installation KB

#4

Message par toniino38 »

Tout d'abord merci beaucoup pour ta réponse ;-)
Au moins pour tester tu pourrais essayer ça :

Code : Tout sélectionner

$KB2289158 = "Microsoft Office 2007 Security Update\Office2007-kb2289158-fullfile-x86-glb.exe"
$btninstall = GUICtrlCreateButton("Installer", 210, 300, 80, 25)
 
J'ai créé mon bouton qui me sert à déclencher mon action jusque là pas de soucis.
Ensuite je crée mon while case :
► Afficher le texte
Quand je fais F5 que le script se lance je n'ai aucune erreur pourtant je ne peux pas cliquer sur le bouton Installer il ne se presse pas y aurait-il d'autres paramètres à lui ajouter ?
Pour la progressbar, ça se calcule en faisant le % de fichier installé/taille totale avec un GuiCtrlSetData sur la progressbar... si tu n'as pas ces données, ça va être dur
La taille totale de toutes les MAJ réunis ou seulement d'une seule ? Dans tous les cas j'ai la taille mais ne connaît pas l'unité de mesure dans laquelle je dois les saisir.
Pourquoi ne pas laisser s'afficher la barre du fichier d'installation ?
Si je laisse la barre d'installation s'afficher elle va s'afficher pour une seule MAJ puis se fermer et lancer la deuxième mise à jour et ainsi de suite. Je préfère vraiment cloisonner mes utilisateurs dans une interface GUI simple car si j'affiche la barre d'installation à chaque MAJ je risque d'avoir des retours de personnes qui dès qu'ils voient une MAJ finit vont fermer le script. C'est pourquoi je veux vraiment une interface GUI simple avec un seul bouton "Installer", un Label pour nous leur dire s'ils ont un 2007 ou 2010 et enfin un Label qui indique la MAJ qui est en train de s'installer tout ça représenter par une barre de progression unique qui quand elle arrivera à la fin les utilisateurs seront invités quitter proprement.
Modifié en dernier par toniino38 le sam. 09 juin 2012 14:19, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Progression graphique + installation KB

#5

Message par mikell »

Si tu as bien défini ton bouton dans le code de la gui, je vois pas pourquoi il ne marcherait pas

Pour la progressbar, l'unité de mesure de taille on s'en fout (Ko, Mo) pourvu que ce soit la même dans tout le calcul
Pour l'affichage, si tu veux que la progressbar suive l'ensemble des MAJ, alors faut la taille de l'ensemble des MAJ, etc
Le problème va être :
- Mesurer (dans une boucle) la taille de ce qui a déjà été installé, ça tu peux le faire avec un DirGetSize sur le répertoire dans lequel tu vas installer les fichiers, par exemple
- Calculer le % par rapport à la taille totale des fichiers à installer
- transmettre ce % à la progressbar
Bon courage :wink:
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
toniino38
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 19 mai 2010 13:06
Status : Hors ligne

Re: [..] Progression graphique + installation KB

#6

Message par toniino38 »

Si tu as bien défini ton bouton dans le code de la gui, je vois pas pourquoi il ne marcherait pas
Et bien c'est également ce que je ne comprends pas car le bouton est bien définie dans la GUI :
► Afficher le texte
Je ne rentre même pas dans mon case puisque je ne peux pas afficher le MsgBox.
Pour la progressbar, l'unité de mesure de taille on s'en fout (Ko, Mo) pourvu que ce soit la même dans tout le calcul
Pour l'affichage, si tu veux que la progressbar suive l'ensemble des MAJ, alors faut la taille de l'ensemble des MAJ, etc
Le problème va être :
- Mesurer (dans une boucle) la taille de ce qui a déjà été installé, ça tu peux le faire avec un DirGetSize sur le répertoire dans lequel tu vas installer les fichiers, par exemple
- Calculer le % par rapport à la taille totale des fichiers à installer
- transmettre ce % à la progressbar
Bon courage :wink:
Merci beaucoup pour le raisonnement je m'y mets dès que j'ai réglé ce problème de case :)
Modifié en dernier par toniino38 le sam. 09 juin 2012 14:16, modifié 1 fois.
toniino38
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 19 mai 2010 13:06
Status : Hors ligne

Re: [..] Progression graphique + installation KB

#7

Message par toniino38 »

En cherchant j'ai réussi à cibler le problème il vient de :
► Afficher le texte
Il s'agit du Case $msg = $btninstall en fait à aucun moment il ne rentre dans le case.

Dans le case GUI_EVENT_CLOSE aucun problème si je met une MsgBox dedans je la reçois bien quand je clique sur fermer.

EDIT :

J'ai trouvé ! Il s'agit en réalité du bouton installer qui (bien que non visible quand on regarde le programme car le fond de l'image est en blanc ^^) "mord" sur son espace, en changeant les valeurs de mes GUI pour lui donner un peu plus d'espace (ça se joue à 10pixel) et ben le bouton fonctionne sans problème !!!
Modifié en dernier par toniino38 le sam. 09 juin 2012 14:19, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Progression graphique + installation KB

#8

Message par mikell »

ça serait sympa que tu édites tes messages et que tu mettes des balises "spoiler" pour encadrer les balises de code (pour les codes volumineux)
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
toniino38
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 19 mai 2010 13:06
Status : Hors ligne

Re: [..] Progression graphique + installation KB

#9

Message par toniino38 »

mikell a écrit :ça serait sympa que tu édites tes messages et que tu mettes des balises "spoiler" pour encadrer les balises de code (pour les codes volumineux)
C'est fait ;)
toniino38
Niveau 2
Niveau 2
Messages : 15
Enregistré le : mer. 19 mai 2010 13:06
Status : Hors ligne

Re: [..] Progression graphique + installation KB

#10

Message par toniino38 »

Je reviens vers vous car je bloque un peu sur la barre de progression tout le reste fonctionne.

J'utilise le GUICtrlCreateProgress et je trouve aucune infos malheureusement sur comment animer cette progress dois-je utiliser le ProgressOn ?

Voici un exemple de ce que j'ai fais pour le moment :

Code : Tout sélectionner

If $versionos = "WIN_7" or "WIN_VISTA" Then

                        ;GUICtrlSetData($btninstall, "Stop")
                        ;For $i = $s To 100 Step 10

                        GuiCtrlSetData($Label2, "Installation en cours : " & $KB2289158 & " ...")
                        #RequireAdmin
                        RunWait($KB2289158 & " /quiet")

                        ;Next

                        ;   If $i < 100 Then
                        ;   $s = 50
                        ;   GUICtrlSetData($Progress1, $s)
                        ;   EndIf

                        GuiCtrlSetData($Label2, "Installation en cours : " & $KB2596993 & " ...")
                        #RequireAdmin
                        RunWait($KB2596993 & " /quiet")

                        ;Next

                            ;If $i < 100 Then
                            ;$s = 100
                        ;   GUICtrlSetData($Progress1, $s)
                        ;   EndIf

                        GuiCtrlSetData($Label2, "Installation en terminée. ")

                        ;ExitLoop
 
J'ai mis en commentaire tout ce qui appartient à la progressbar (si j'enlève je me retrouve avec plein d'erreur sur mes EndIf. Si quelqu'un pourrait m'éclairer sur la syntaxe à adopter :)

Merci beaucoup
Répondre