[..] Installation de suite logiciels selon checkbox

Aide sur les Interfaces Graphique Utilisateurs (GUI).
Règles du forum
.
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

[..] Installation de suite logiciels selon checkbox

#1

Message par cedric »

Bonjour à tous,

Je me suis donné un projet quelques peu ambitieux pour mes faibles connaissances avec Autoit.
J’aimerais créer une interface GUI mais je ne sais pas du tout comment m’y prendre et j’aurais besoins d’être guidé. Je remercie donc par avance toute personne qui voudra bien éclairer ma lanterne en parlant avec des mots d’enfants (je n’ai jamais fait de programmation, j’ai réussi quand même à créer sans trop de mal les installations automatisées de tout mes logiciels, j’apprend vite).

Mon but est donc de créer une GUI, composée de :

- Plusieurs checkbox (une trentaine),
- D’une autre checkbox permettant de cocher ou décocher toute les autres
- Encore une checkbox permettant d'en cocher cocher plusieurs prédéfinis.
- d’un bouton « Installer »,
- d’un bouton « Quitter ».
- d’un bouton « Documentations »
- Eventuellement (mais je ne sais pas si cela est possible) de faire en sorte à ce que les titres des checkbox soit des liens qui renvoient sur une page html donnant des informations sur le logiciel en question (dans .\Data\infolog). Si cela n'est pas possible d'un bouton Information qui renverrai sur une page html (toujours située dans .\Data\infolog)
- Une image d’arrière plan (peu importe le format).

L’utilité de tout cela :

Checkbox = Une checkbox correspond à un logiciel (sauf celles qui permet de tout cocher et tout décocher et qui permet de cocher les logiciels communs)
Bouton « Installer » = Permet d’installer les logiciels dont les checkbox sont sélectionnés
Bonton « Quitter » = Pour quitter la GUI
Boutons documentation = Pour renvoyer sur différentes doc que j’ai écrite dans le cadre de mon travail.
Liens pour les titres des chexbox = Pour donner les infos sur les logiciels


Le fonctionnement en détail :

Imaginons 8 logiciels (les scripts d’installation automatisée sont déjà tous fait) : LOG1, LOG2, LOG3, LOG4, LOG5, LOG6, LOG7, LOG8.

Si je coche les cases des logiciels LOG2, LOG6, LOG7 et que je clic sur le bouton « Installer », cela doit lancer les scripts des logiciels correspondants (qui se trouvent dans .\Data\scripts).
Si je ne coche rien et que je clic sur installer, j’aimerais avoir une boite de dialogue m’indiquant que je n’ai rien sélectionné.

La checkbox pour les logiciels communs devra cocher automatiquement d’autre checkbox par exemple les LOG1 + LOG4 + LOG5 (firefox, thunderbird et antivirus par exemple)
Le bouton « Documentation » : j’aimerais qu’il renvoie sur une autre page contenant plusieur boutons (un bouton par documentation). Lorsque je clic sur le bouton d’un doc, j’aimerais que cela m’ouvre le fichier pdf correspondant (qui se trouve dans .\Data\doc)


En cherchant sur le forum j’ai trouvé différente choses.
J’en ai remanié les titres des boutons et j'ai ajouté des checkbox pour vous donner une idée de ce que j’aimerais faire. Comme ce code ne vient pas de moi il doit y avoir des choses qui ne me servirons à rien dedans.


Je pense que je dois utiliser la fonction « If » coupler avec « run » mais comment ?

En gros je pense que cela serai :

If la case est cochée alors run (« chemin du logiciel)
Then ne rien faire

J'espère avoir été assez explicite sur ma demande et je merci encore tous ceux qui voudront bien m'aider pour ce projet.
Modifié en dernier par timmalos le jeu. 16 oct. 2008 18:45, modifié 1 fois.
Raison : Pour plus de lisibilité du sujet , suppresion du code inutile
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#2

Message par timmalos »

Tout d'abord, vu vos très faibles connaissances au vu de ce que vous pensez de If then Endif, je vous conseille d'aller faire un tour sur ces tutoriels:

Apprendre la structure d'un code (By Tlem)
If ... then... EndIf: Tutoriel sur les actions sous conditions (By Codename44)

Ensuite, pour votre script, voila une solution:

Il suffit de completer l'array $a_installer et mettre seulement les noms des fichiers ou des scripts sans le chemin des dossiers.
► Afficher le texte
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#3

Message par cedric »

Merci Timmalos pour cette réponse rapide. C'est gentil de vous pencher sur mon problème.
J'essaie ça dès que possible et vous tient au courant.
Merci aussi pour le premier lien, il saura m'être utile pour comprendre les bases.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#4

Message par timmalos »

Vous avez respecté les règles de présentation, vous etes aimable , vous avez très bien expliqué votre problème, et de sucrcroit vous avez fait des recherches prealables malgres vos faibles connaissances (ce qui n'est pas pejoratif on est tous passé par la un jour :lol: (sauf moi , car des que j'ai entrapercu ce langage, j'ai programmé comme un dieu!, mais c'est plutot rare 8) ----->>> [-] ). Tant que vous continuez dans cette voie vous aurez tjrs une réponse des modérateurs :wink: (du moins dans la limite de leurs capacités, faut pas trop leur en demander non plus :P ) (ah tien, j'en suis un aussi maintenant? :idea: )

Si il vous faut plus d'infos ou des modifications n'hesitez pas, il n'y a qu'une chose( à ce que je me rappelle :? ) que je n'ai pas mise dans mon exemple, c'est le lien direct sur le nom des checkboxs. :roll:
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#5

Message par cedric »

Et voila, ma GUI est presque complète.... et ça ne fonctionne plus :? .

J'ai mis le script que vous m'avez donné à la racine de mon répertoire, j'ai testé l'installation ça fonctionne très bien (MERCI et BRAVO).
J'ai donc complété afin d'avoir tout (ou presque tous) les logiciels. Mais cela ne fonctionne plus.

Lorsque je coche 7Zip et que je clic sur "Install", il ne se passe rien et si après cela je clic sur "Quitter" la fenêtre ne se ferme pas (alors que si je clic sur "Quitter" sans rien toucher ça fonctionne)..... Je ne sais pas si ce que je dis est compréhensible...

Pour la déclaration de l'array principale, j'ai mis tout à la suite mais comme j'ai 41 exécutables peut-être que je dois faire des retours à la ligne. Je ne sais pas trop si cela est important.

Sinon si les liens directs sur les noms des checkboxs sont faisables et que vous avez un exemple je ne dis pas non (je continu à chercher de mon coté).
Si vous avez des remarques, je suis bien entendu preneur également (il n'y a que comme ça que je pourrai avancer).

Voici mes modifications, j'ai beau relire je ne trouve pas mon erreur. Peut-être que vous ou quelqu'un d'autre la verra :
► Afficher le texte
Modifié en dernier par timmalos le mer. 15 oct. 2008 21:09, modifié 1 fois.
Raison : Rajout du Spoiler autout du code pour rendre plus lisible
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#6

Message par cedric »

Désolé c'est encore moi... :)

J'ai oublié de préciser aussi que quand je clic sur le bouton "Documentation" le fichier help.html ne s'ouvre pas.
Pourtant la page help.html est bien dans \Data\infolog comme écrit dans le script :

Code : Tout sélectionner

Func documentation()
    Run( @ScriptDir &"\Data\infolog\help.html")
   
EndFunc 
 
Pensez vous qu'il me manque quelque chose ?

Dans tout les cas je vous remercie beaucoup pour le script que vous m'avez donné, il m'a beaucoup aidé à mieux comprendre les GUIs (bon je suis loin de tout comprendre mais avec votre aide j'ai déjà pu faire un grand pas).
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#7

Message par timmalos »

Voila qq chose qui devrait marcher:
l'erreur du a la fonction install() venait de ma part:
Vu que je ne sais pas comment marche vaut script, je me suis dit qu'il vallait mieux rajouter un sleep(1000) entre 2 lancements de scripts, car si le script lance 35 installations en moins d'une seconde, je doute que l'ordi resiste. Peut etre qu'il faudra rajouter un temps beaucoup plus long en fonction de vos scripts.

J'ai corrigé une de vos erreurs:
Il y avait une boucle qui ressemblait a ca:

For $i = 1 to Ubound($a_installer) - 1
$a_installer[$i][0] = "0"
Next
Vous ne pouvez pas mettre la meme dans votre 'fonction' ou il ne coche que certaines cases, il va falloir y ecrire manuellement, le script que je vous propose inclue cette modification.
Comme vous aviez fait , la gui aurait marcher comme il faut, mais quand le script aurait lancer l'installation après avoir coché " seulement la selection", il aurait installé tous les logiciels.

Vous pouvez me dire si ca marche ?
► Afficher le texte
Ps: Vu que vous utilisez des logiciels gratuits, quand vous développerez votre application, si vous pouvez l'uploader sur internet si elle n'est pas trop grosse, votre projet m'interesse :)
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#8

Message par timmalos »

Mon script marche sur le OnEventMode, vous auriez egalement pu passer par GuigetMsg comme dans le premier exemple que vous aviez montré.
Heureux qu'il puisse vous aider. Concernant le probleme de la doc, je n'ai pas fait attention, mais la fonciton Run() ne peut lancer que des fichiers binaires: .exe, .bat, etc
Pour ouvrir une page internet avec le navigateur par defaut, on va donc passer par une fonction tiers _Start() que voila:

Code : Tout sélectionner

Func _Start($s_StartPath)
    If @OSTYPE = 'WIN32_NT' Then
        $s_StartStr = @ComSpec & ' /c start "" '
    Else
        $s_StartStr = @ComSpec & ' /c start '
    EndIf
    Run($s_StartStr & $s_StartPath, '', @SW_HIDE)
    If Not @error Then SetError(1)
EndFunc   ;==>_Start
IL vous suffit de remplacer Run par _Start et tout est ok :)
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#9

Message par cedric »

Merci pour cette précision.
Et aussi toute mes excuse, le script que j'ai mis précédemment est bien fonctionnel. Erreur de ma part, comme j'ai fais mes modifications petit à petit j'ai fait plusieurs enregistrement.
Quand j'ai voulu tester j'ai copié le script (situé sur mon bureau) à la racine du répertoire mais je n'ai pas relancé celui-ci... :(

Sinon pour la page html en cliquant sur documentation, j'ai essayé ceci:

Code : Tout sélectionner

Func documentation()
    ShellExecute ("\Data\infolog\help.html")
   
EndFunc 
 
J'arrive donc à ouvrir la page help.html en appuyant sur le bouton documentation.
Je pourrai donc peut-être trouver un moyen de faire la même chose avec le nom des Checkboxs....
Cela est plus court que la fonction "start" que vous me mettez mais la fonction "start" est peut-être plus approprié.
Je vais essayé de comprendre les différences entre les deux et voir ensuite tester tout ça.
Je ne manquerai pas de vous tenir au courant.
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#10

Message par timmalos »

Faites bien attention votre script ne generait pas d'erreur mais ne pouvait pas marcher comme je vous l'ai expliquer, a cause de l'erreur de la boucle For si l'utilisateur choisit de cocher la chackbox qui ne selectionne que certains programmes
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#11

Message par cedric »

Bonjour.
En effet cela ne fonctionne pas ainsi.
Lorsque je clic sur la checkbox pour cocher les logiciels communs et que je clic sur installer, tout les logiciels lance l'installation et en même temps.
Je viens seulement d'essayer avec votre modification pour la fonction "allcommun". Mais le résultat est le même.

Sinon j'ai ajouté des cadres dans ma GUI pour pouvoir classé les logiciels par groupe et aussi un bouton "A propos":
Voici la partie GUI
► Afficher le texte
PS: Pas de soucis, lorsque le CD sera finalisé je vous enverrai un lien ou vous pourrez la télécharger. :wink:
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#12

Message par timmalos »

Voila la version modifiée: rectification du bug notifié, plus rajout des fonctions enable et disable pour empechecher les problemes dus aux manipulations complexes des Checkbox 'all' et 'commun'

Merci d'avance pour le lien a venir
► Afficher le texte
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#13

Message par cedric »

Super ! :D
Ca fonctionne du tonnerre !!!

Vraiment merci beaucoup.

J'aurais une dernière question concernant la GUI.
J'ai voulu ajouter une image de fond:
► Afficher le texte
Si je place cette ligne juste après celle de la forme :
► Afficher le texte
j'ai bien l'image de fond mais les checkboxs et les boutons ne sont plus accéssibles.

Si je met cette même ligne à la fin des paramètres GUI, à la suite de ces lignes :
► Afficher le texte
Le fond s'affiche bien, les boutons sont accessible, mais si je place une fenêtre devant ou tout simplement si je réduis la fenêtre, le fond passe par dessus les checkbox. Il faut que je passe le curseur de la souris au dessus pour qu'ils réapparaissent.

Savez vous comment/où placer cette ligne ?
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#14

Message par timmalos »

Tu place cette ligne au debut, et tu rajoute:

GuiCtrlSetState(-1,$GUI_DISABLE)

Juste après :)
cedric
Niveau 2
Niveau 2
Messages : 27
Enregistré le : jeu. 28 févr. 2008 14:22
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#15

Message par cedric »

Merci beaucoup !!! :D

Maintenant ça commence à être pas trop mal.

Par contre j'ai remarqué quelques choses (mais ce n'est pas très grave pour le moment).

Afin qu'il y ai un temps plus large entre chaques installations (pour que les machines peu puissantes puissent suivre), j'ai augmenté le temps de pause à 30 secondes.
Le problème est qu'une fois la dernière installation fini, il faut attendre 30 secondes pour pouvoir quitter l'interface.
Pensez vous qu'il y est un moyen par exemple pour "forcer" à quitter.


Ha oui, j'ai ajouté cette ligne après Else dans la fonction allcommun :

Code : Tout sélectionner

Else
        GUICtrlSetState($checkall,$GUI_ENABLE)
 
Car quand je cochait la checkbox pour les logiciels communs, la checkbox "tout cocher/Tout décocher" se grisait mais après elle ne se dégrisait pas si je décochait l'autre.
J'ai testé à tout hazard et ça fonctionne. :D
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#16

Message par timmalos »

Envoyez le script complet, et si possible vos scripts d'installation. Peut etre est il possible de rajouter une barre de progression afin que l'utilisateur puisse suivre l'etat :), et quand l'installation est terminée, il sera facil d'enlever les 30 sec

Je regarderai ca quand vous m'enverrai la derniere version du scrit
SurPriseS
Niveau 6
Niveau 6
Messages : 289
Enregistré le : jeu. 06 sept. 2007 11:35
Localisation : Finistère sud
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#17

Message par SurPriseS »

Salut, si sa peut te donner des idées : http://www.autoitscript.fr/forum/viewtopic.php?f=6&t=81

Un programme que j'ai fait y'a déjà quelques temps ^^ ;)
J'utilise une installation via FTP mais bon ^^
Seth
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 01 déc. 2008 08:28
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#18

Message par Seth »

Bonjour!!!
Je suis actuellement étudiant ( Bon ça intéresse personne ok) et j'ai découvert AutoIt il y a à peine 3 heure. Je me suis fait la main sur quelques installations, silencieuse ou non, des doubles confirmations d'annulation etc... Bref rien de compliqué ayant des notions en Info grâce à 6 mois d'Iut Info (et ça ressemble pas mal à l'Ada). Tout ça dans le but de faire la même chose que Cédric, quelques détails près.
Je fais ce programme pour famille, amis, qui n'y connaissent rien en info, ne connaissent pas ou peu de logiciel pour faire ce qu'ils veulent. Donc la différence avec le script de Cédric, c'est que je cherche à mettre mes checkboxs dans un "cadre" a gauche (je change les coordonnées, j'ai lu son script, rien de méchant) mais je souhaiterais également mettre un autre "cadre" a droite, qui afficherait un résumé du logiciel.
Donc voila je pose la question, pour voir si tout est possible. Je souhaiterais finir le script dans quelques semaines au plus tard, ayant encore un PC à réinstaller ( PC portable, downgrade Vista - XP) et je voudrait m'éviter encore une fois toute la réinstallation que certes, je connait maintenant par coeur, mais qui reste longue et chiante ( ya pas d'autres mots, désolé!)
Donc pour résumé, je voudrais faire en sorte que :
-les nom des logiciels soit des sorte de "liens"
-qu'une fois que l'on clique sur ces "liens" que la description du logiciel s'affiche sur la droite
-un barre de défilement ( il y a à peu près autant de logiciel que Cédric mais en une seule colonne ;-) )
-et en option ( mais ça c'est du pointillage) des groupes, genre "Video", quand on clique dessus, s'affiche les noms des programmes associés , comme VLC, media player classic ( qui sont des "liens", comme j'ai essayé d'expliquer au dessus)

Je remercie d'avance pour l'aide que vous pourrez me fournir, et je fournirais le code final au cas ou d'autres personnes se retrouve dans la même situation que moi!!!

(Je me suis relu plusieurs fois, je crois être compréhensible...)
Seth
Niveau 1
Niveau 1
Messages : 9
Enregistré le : lun. 01 déc. 2008 08:28
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#19

Message par Seth »

Bon j'ai reparcouru le code de Cédric, et j'ai regardé un peu les fonctions GUI, et je pense avoir juste en pensant que la barre de défilement se créer avec createslide, et l'arborescence avec createtreeview.
Je trouve toujours pas comment faire des noms des "liens" ni comment affiché du texte a droite... Je continu a chercher mais j'espère toujours trouver ici de l'aide, car je m'attaque a gros je crois... en tout cas pour un début ;-)
Merci!!!
Avatar du membre
timmalos
Niveau 11
Niveau 11
Messages : 1970
Enregistré le : dim. 18 mai 2008 15:16
Status : Hors ligne

Re: [..] Installation de suite logiciels selon checkbox

#20

Message par timmalos »

Voilà un debut, en fait quand l'utilisateur clique sur une chekbox, ca la selectioinne. Si il clique une 2Eme fois, ca la Deselectionne ET ca affiche un message d'informations sur le programme.
Fichiers joints
AppInstall.au3
(31.7 Kio) Téléchargé 222 fois
Modifié en dernier par Tlem le ven. 05 déc. 2008 20:56, modifié 1 fois.
Raison : Code mis en fichier joint
Répondre