[..] Base de discussion sur un projet de script

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Oppenheimer
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 janv. 2015 16:20
Status : Hors ligne

[..] Base de discussion sur un projet de script

#1

Message par Oppenheimer »

Bonsoir,

Je ne sais pas vraiment si on peut considérer cela comme une "demande de script" à proprement parlé étant donné que j'aimerai surtout certaines réponses me permettant de me débrouiller moi-même, mais il semble que cette section du forum soit tout de même la plus adaptée à ma requête.

Avant de lire la suite et de prendre peur, il faut bien comprendre que ce que je recherche avant tout, c'est une base de discussion entre personnes cherchant également à scripter l'installation silencieuses d'applications que plus ou moins tout un chacun a sur son pc. Bien souvent, quand on tente de faire ce type de script, on se heurte au fait que certaines applis ne gèrent absolument pas le "silent install" ou alors qu'il est extrêmement difficile de trouver la bonne commande à passer sur l'.exe ou le .msi pour rendre l'install silencieuse.
J'ai par ailleurs donné, en fin de post, une liste d'applications qui n'est pas exhaustive. J'ai eu à un instant T besoin de ces applis, mais le but est surtout d'offrir une "base structurelle" de script afin que chacun puisse l'adapter en fonction des applis dont il a besoin; grosse modo qu'il voit à quoi ressemble le code final pour faire ça.

En farfouillant sur ce forum, j'ai d'ores et déjà trouvé de tout petits scripts qui permettent de rendre complètement transparente l'installation d'un logiciel donné. Exemple ici avec Firefox :

Code : Tout sélectionner

RunWait( "Firefox Setup 35.0.1.exe -ms")
Cependant, certains logiciels sont bien plus retords à installer et nécessitent, je pense, beaucoup plus de réflexion.

Quelques détails sur le concept et contraintes du script :

* Je cherche à mettre en place un script AutoIt (ou plusieurs) qui me permet d'installer de façon transparente et silencieuse un ensemble d'applications prédéfinies.
* Ce script devra être compatible avec un Windows Seven x64
* Ce script sera déployé sur un poste fraîchement installé
* Ce script devra être le plus autonome possible en minimisant les interventions humaines nécessaires à son bon déroulement
* Afin d'alléger le script de départ, l'idéal serait que le script aille chercher les .exe ou .msi en mode "En ligne" (un exemple sur ce thread) plutôt que d'avoir un énorme package embarqué.

Concernant le dernier point, il faut bien comprendre la logique mise en oeuvre ici :

-> Ce script peut-être vu comme un outil personnel pour ceux qui formatent souvent leur machine et ne veulent ni d'un ghost, ni d'un master. Ils réinstallent leur OS proprement et balancent le script afin de réinstaller un "package de base" de leurs applis favorites.
-> Cependant, il peut être bon d'envisager de générer un script suffisamment abouti pour pouvoir l'envoyer à une autre personne qui aurait également besoin d'un package de base suite à une réinstall de poste.

Problématiques envisageables :

* Adopter le déroulement du script au profil utilisateur du poste.
* Trouver les commandes permettant une installation silencieuse étant donné que celles-ci varient en fonction du logiciel ou ne sont tout simplement pas prises en charge.

Liste non exhaustive des applications que j'envisageais pour MON poste :

* Flash Player
* Evernote
* Filezilla avec import du fichier lié au gestionnaire de sites
* Foobar2000
* Freemake Video Downloader
* Freemake Video Converter
* Google Drive
* Java
* Keepass avec import d'un fichier de base de donnée
* MS Office 2013
* Mozilla Firefox (avec installation des addons mais je doute que cela soit faisable étant donné que c'est une appli dans une appli)
* mRemoteNG
* Notepad++
* Q-dir
* Skype
* Steam
* Teamviewer
* VLC
* VMWare
* Winrar
* XrecodeII
* Jshot
* Ma-config
* Battle.net
* Driver pour imprimante Canon Pixma MX725
* Driver pour souris Logitech MX700 Gaming Mouse
* Driver pour clavier Logitech Illuminated Keyboard

Voila grosso modo un premier jet du projet. Je serais ravi de creuser avec vous afin de tenter d'en réaliser tout ou une partie et que nous mettions en communs nos bribes de code ou scripts complets :)

Bonne soirée à tous

Oppie
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#2

Message par Tlem »

Comme dit sur un autre sujet, jetez un oeil sur ça :
http://dev.tranquil.it/wiki/WAPT_-_apt-get_pour_Windows

Envoyé de mon appareil mobile avec Tapatalk.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
DimVar
Niveau 10
Niveau 10
Messages : 867
Enregistré le : ven. 30 mai 2008 15:08
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#3

Message par DimVar »

Bonjour,

Ca me fait penser à un article sur lequel je suis tombé il a peu :
http://korben.info/wapt.html Oups, j'avais pas vu le message du Mr d'au dessus.

Je pense qu'on a tous pensé à ce genre de script, mais trop chronophage à maintenir à mon gout. Aux vues des versions qui changent, des abandons de projet (winamp ou autre), des problèmes liés aux config de chacun, etc, etc...
Mais je ne manquerai pas de vous filer un coup de pouce si ce projet passe en recette.


Cdlt, Dimvar.
N'évoquons pas la pierre, les jeunes risqueraient d'en poire !
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#4

Message par jguinch »

Sur le forum US, The Vollatran Project peut t’intéresser.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#5

Message par orax »

Si ça peut t'intéresser il y a aussi
  • https://chocolatey.org/ ;
  • http://ketarin.canneverbe.com (il n'y a pas de dépôt mais il est utile pour télécharger automatiquement la dernière version des installateurs (.msi, .exe)) ;
  • Ninite (approche différente et nombre de paquets peu important) ;
  • OneGet (devrait être intégré à Windows 10 d'après ce que j'ai compris).
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Oppenheimer
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 janv. 2015 16:20
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#6

Message par Oppenheimer »

Bonsoir à tous,

Tout d'abord, il est vrai que ce type de script ressemble à ce qu'on peut voir de déjà "tout prêt" et plus ou moins grand public sur internet comme WAPT (que je ne connaissais pas, merci Tlem) ou Allmyapps. Cependant, avec ce type d'outils, je perd de vue deux choses :

- Le fait de pouvoir automatiser une routine au premier lancement d'une machine, au pire des cas en exécutant un seul fichier, l'.exe du script AutoIt compilé
- Le fait de "mettre les mains dans le cambouis" parce que j'ai beau travailler dans le secteur informatique, le codage a toujours eu raison de moi (chacun son métier ^_^).

En ce qui concerne le projet Vollatran, c'est vraiment ce type de script que j'avais en tête en postant mon message originel. Il est bien dommage que le post ai 3 ans et que le script soit surtout viable pour des distributions XP. Cependant, il y a deux choses qui me gène un peu vis-à-vis de ce projet :

- Une interface graphique : Pour le coup je privilégie toujours une installation la plus discrète possible, je ne cours donc pas après des menus
- Le fait que comme très justement souligné dans ce topic, c'est un travail titanesque de sans arrêt éditer le script pour gérer les mises à jour logicielles

Ketarin semble être un outil très utile si on le considère comme un "récupérateur de sources". Cependant, cela nous fait perdre de vue l'aspect "Récupération des packages en ligne" afin d'alléger le script. Je passe donc rapidement dessus sans dire que l'outil n'est pas intéressant, disons juste que je le garde sous le coude...

... pour en venir à l'outil qui m'a le plus intéressé au travers de vos posts, à savoir Chocolatey. En le testant sur une VM, j'ai tout de suite songé qu'il y avait moyen de faire quelque chose de très intéressant en combinant de petits scripts AutoIt avec la puissance du Powershell de Chocolatey.

Chocolatey est une banque online de packages vraiment bien fournie (j'ai été surpris d'y voir certains logiciels) qui a le bon goût d'installer les packages en question de façon silencieuse. Ainsi, pour lui donner une routine à suivre, il ne reste qu'à faire faire le travail à AutoIt. Quelque chose qui ressemblerait à :

* Premier lancement du PC
* Lancement du script AutoIt qui déroule les actions suivantes :
-> Ouverture d'un CMD pour exécution de la commande Powershell installant Chocolatey
-> Un wait suffisament élaboré pour comprendre que Chocolatey est installé
-> Si installé, lancer une commande pour l'installation du premier package "choco install 7zip.install " par exemple, étant donné que c'est un logiciel très utilisé
-> Un nouveau wait qui attend la fin de l'install avant de lancer l'action suivante
-> Etc, Etc

En suivant cette logique et en codant "à coté" quelques petits scripts d'installation de drivers (j'y travaille et ça avance pas trop mal. Je ne suis pas expert, mon code vous fera sûrement sourire, mais ça fonctionne pour les drivers USB et Ethernet), je pense qu'il y a moyen de dégrossir pas mal le travail de préparation d'un poste.

Trois questions de débutant d'AutoIt liées à ce que je viens d'écrire du coup :

* Dans un premier temps, on veut lancer un prompt afin de passer les commandes liées à Chocolatey (commande Powershell + les commandes de récupération de Packages). Est-ce que le code suivant est judicieux ? (Fonctionnel certes l'ayant testé)

Code : Tout sélectionner

Run("C:\WINDOWS\system32\cmd.exe")
WinWaitActive("C:\WINDOWS\system32\cmd.exe")
* Comment faire passer la commande Powershell suivante dans mon script ?
@powershell -NoProfile -ExecutionPolicy unrestricted -Command "iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))" && SET PATH=%PATH%;%ALLUSERSPROFILE%\chocolatey\bin
* A quoi ressemblerait une commande de Wait suffisamment intéressante pour attendre la fin de l'install d'un package ?


Merci à tous pour vos réponses

Bonne fin de nuit :)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#7

Message par jguinch »

Pour PowerShell, un simple RunWait devrait suffire.

Finalement, j'avoue ne pas trop savoir de quoi tu as besoin... Dans un autre post, tu parles de MDT et là c'est plutôt un outil pour la maison dont il s'agît...
Si c'est pour l'entreprise, mieux vaut n'installer que les versions qualifiées plutôt que les dernières versions.

Bien que Chocolatey (que je ne connaissais pas) propose un beau panel de packages, tu ne trouveras pas tout ce dont tu as besoin (dans ta liste). Certes, tu auras la possibilité de créer tes propres package et les ajouter à la distribution Chocolatey, mais tout ne sera pas validé : voir la section Creating Chocolatey Packages

Pour revenir à Vollatran, tu peux tout à fait le customiser pour qu'il n'y ait aucune interface graphique.



Donc au final, tu dois choisir entre :
- installer les dernières versions de logiciels à l'aide d'un outil comme Chocolatey (mais tu seras limité à la liste de packages disponibles)
- utiliser un outil local (Vollatran ou autre...) qui te demandera pas mal de travail (trouver les bonnes lignes de commande, packager tes installs, maintenir les version), mais qui aura le mérite de faire exactement ce que tu veux (d'autant plus que tu pourras utiliser ces packages/commandes dans ton MDT)

On ne peut pas faire ce choix à ta place, à toi de savoir ce que tu veux faire.


Edit : jette un oeil à WPKG : la section Silent Installers dispose de pas mal d'exemples
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Oppenheimer
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 janv. 2015 16:20
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#8

Message par Oppenheimer »

J'ai eu le sourire en lisant ton post parce que pour le coup, c'est exactement ça : Je suis parti d'un besoin pour mon entreprise et je me suis dit qu'il était finalement intéressant aussi de le transposer à mon domicile.

Pour la petite histoire : Je suis Responsable Informatique pour une société de service. Nous fournissons des postes aux utilisateurs qui sont des Lenovo L440 / T440 et ThinkCentre M93p. Les postes nous sont livrés déjà masterisés en Seven 64 bits et préparés pour les besoin de la société. Nous n'avons qu'à exécuter un script PPT+ relié à l'AD pour la création automatisée du profil utilisateur, les GPO redescendent pour appliquer tous les paramètres qui vont bien et le tout ne nous prend guère plus de 15mn.

Cependant, pour certains projets, des salariés ont besoin d'avoir des Lenovo ThinkCentre M93p sur Seven 32 bits. Etant donné que ce n'est pas une procédure standard, nous n'avions qu'une bête clé USB avec un Master Seven 32 "modifié" pour la société et créé il y a environ 2 ans que nous balancions sur les rares postes qui en avaient besoin. Pas de soucis avec les L440 et T440, juste quelques drivers basiques à récupérer sur notre référentiel, cependant pour le M93p (qui est un pc fixe all in one), impossible d'avoir l'USB sur WIndows. L'installation se passait bien, mais une fois sur le bureau Windows, les USB ne réagissaient plus. Mode sans échec, réinstallation de drivers via SafeMSI en sans échec,etc.

C'est à ce moment la que j'ai posté pour la première fois, parce que j'étais sur MdT en train d'essayer d'aller plus vite que les équipes qui gèrent ça (ou ne gèrent pas en fait...) en voyant si je pouvais "éditer" le WIM du master pour y ajouter ce que je voulais. J'ai finalement trouvé mais ça ne marchait pas, et je voulais de toute façon repartir sur une base saine et arrêter de "bricoler" avec ce vieux master.

Nous sommes donc repartis d'une install propre d'un Seven 32 et j'ai procédurer l'ensemble des étapes de la réinstall jusqu'à la livraison utilisateur. Au milieu, je suis obligé de passer par une réinstallation de quelques drivers, intégration au domaine, désactivation UAC (nos users sont admins de leur poste), reboot, etc. J'étais donc intéressé par tout ce qui me permettrait d'automatiser cette tâche étant donné que 1) C'est un process non standard qui me bouffe du temps et qui n'est pas facturé aux projets pour l'instant / 2) Si je me retrouve avec 4 ou 5 postes à préparer en même temps, je n'ai absolument pas envie de me palucher 5 installs en manuel / 3) Le service déploiement SCCM ne semble pas décider à intégrer les packages Seven 32 qui vont bien donc je dois me débrouiller pour gérer le parc.

Au delà de l'aspect "société", je me suis rendu compte qu'il serait bon de monter ce type de script à titre personnel pour automatiser certaines procédures que j'applique lorsque je monte des VM, en cas de réinstallation du poste (vu que je n'aime pas les ghosts et que je réinstalle assez souvent), au cas où Pierre, Paul ou Jacques de mon entourage me demande un coup de main pour une réinstall afin de minimiser le temps sur le pc et maximiser le temps à apéro, etc.

Etant donné que je suis touche à tout et que j'ai la chance d'être devant un pc toute la journée, travailler sur deux fronts ne me gène pas du tout (Chocolatey et Voltaran). Il semble juste que l'approche proposée hier soir d'AutoIt + Chocolatey semble plus facile à appréhender pour un débutant comme moi que de me lancer dans l'analyse d'un code tel que cleui de Voltaran alors que je comprend 1 ligne sur 5. Il me semble plus logique de commencer petit pour ajouter petit à petit des fonctions :)
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2511
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#9

Message par jguinch »

Du coup moi aussi ça me fait sourire, pour plusieurs raisons...
Je suis Responsable Informatique et Le service déploiement SCCM ne semble pas décider à intégrer les packages Seven 32 : c'est qui qui fait la loi ? :P
Tu as à ta disposition MDT et SCCM (c'est pas donné à tout le monde), et tu veux en ajouter une couche ??? :shock:
Si c'est pour la maison, OK pour Chocolatey + AutoIt, mais franchement pour l'entreprise, ce serait se compliquer la vie alors que tu as tout ce qu'il faut à portée de main.

Perso, j'avais l'idée de proposer aux techniciens un outil comme Voltaran, mais finalement on utilise MDT pour installer les applications (même une fois que la machine est en prod).
On peut se créer des scripts de lancement du LiteTouch, qui lancent automatiquement la Task Sequence de notre choix (avec un strict minimum d’interaction).
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Oppenheimer
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 janv. 2015 16:20
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#10

Message par Oppenheimer »

Mdr, pour le coup j'ai peut-être pas été super clair mais je suis reponsable informatique de la BU locale, et le déploiement SCCM est géré au niveau "entité" (oui ils font tjs très simple) donc c'est pas moi qui ai la main sur ce qu'on met dans le SCCM pour tout te dire :). Si on veut aller plus loin, quand j'ai contacté le mec qui gère les master "exotiques" en lui disant que son master de 32 posait problème, il m'a dit texto qu'il en avait rien à foutre tant que le responsable d'entité ne lui faisait pas une remontée >_<

Au delà de ça, comme tu l'a sans doute compris, je m'intéresse à AutoIt et / ou Chocolatey pour tous les aspects de la vie courante, que ça soit pro ou perso et ça m'intéresse donc de me "former" dessus. Je suis donc toujours preneur d'infos et le mieux pour ça reste d'avoir un projet tel que la création d'un script.

Après, il est vrai que quand ce sont des packages dispos dans SCCM, l'installation / deploiement sur les postes est un vrai bonheur ^_^
Oppenheimer
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 janv. 2015 16:20
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#11

Message par Oppenheimer »

Pour en revenir au sujet, je me heurte à un problème vis-à-vis de la récupération du texte d'un prompt.

Sur votre forum, je pensais avoir trouvé une réponse ici mais finalement on a donné une autre solution à l'user. J'ai parcouru le net une bonne partie de la nuit, en français ou en anglais, et la commande qui revient sans cesse est StdoutRead.

J'avoue n'avoir absolument pas compris comment utiliser la fonction en question, et je me demandais si on ne pouvais pas simplifier la chose

Lorsque je récupère un package via Chocolatey, il m'affiche dans le prompt un "Finished Installing" sur lequel je voulais travailler. Comprendre récupérer ce bout de texte et dire à AutoIt "si le prompt affiche "Finished Installing, lance la commande de téléchargement suivante".

Cherchant à améliorer le code, je suis toutefois ouvert à d'autres pistes. J'ai par exemple tenté de lui dire "Si Notepad++ est installé, alors lance le package suivant" ou "Si le dossier Notepad++ est installé, alors lance le package suivant". Au moment ou j'écris ces lignes, je songeais aussi à jouer sur le nom de la fenêtre prompt en lui disant "Quand la fenêtre ne s'appelle plus "Administrateur : C:\WINDOWS\system32\cmd.exe -choco install notepadplusplus.install" alors lance l'install suivante mais ça me semble plus bancale.

Une idée afin de mieux gérer la transition entre deux installs ?
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#12

Message par Tlem »

Bonjour.
En réalisant une recherche sur le forum avec le terme StdOutRead j'obtiens 5 pages de résultats !!!

En fouillant très rapidement, j'y trouve un exemple représentatif de code fournit par jguinch sur ce sujet : http://autoitscript.fr/forum/viewtopic. ... 44&p=84958

:roll:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Oppenheimer
Niveau 1
Niveau 1
Messages : 9
Enregistré le : jeu. 29 janv. 2015 16:20
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#13

Message par Oppenheimer »

Pour le coup, comme je l'ai dit, ayant parcouru une bonne partie de la nuit votre forum (cf le lien que j'ai cité, entre autres) ou d'autres, le problème n'est pas mon utilisation de la fonction rechercher (bien que j'ai pu constater que tu es relativement amateur du "J'envoi le demandeur chercher avec ce petit :roll: si agaçant ^_^) mais plutôt de ma compréhension de la fonction.

D'une manière générale, si je demande de l'aide ici, ce n'est pas pour "me faire mâcher" le travail ou ne pas passer par une étape de lecture importante de tout manuel d'utilisation, mais bel et bien parce que je ne comprend pas telle ou telle fonction ou que je cherche à utiliser la plus adaptée à telle situation (d'où le fait que j'ai cité StdoutRead ou bien un appel vers un dossier, ou un .exe, ou autre :) ).

Ce "malentendu" sur ma capacité à rechercher une information dans un forum étant résolu, je persiste sur le fait que bien que j'ai vu pas mal de posts utilisant cette fonction pour transférer le contenu d'un prompt vers un autre fichier. Dans le post cité plus haut, il y a effectivement un bout de code qui semble convenir, à savoir :

Code : Tout sélectionner

While 1
    $output= StdoutRead($foo)
    If @error Then ExitLoop

    If NOT @Error Then
        IF $line Then
            GUICtrlSetData(-1, $output&@CRLF, 1)
        EndIf
    EndIf

Wend
Mais je voulais être bien sur qu'on parlait de la même chose. Etant donné que mon seul but est de faire "lire" à AutoIt une partie du texte contenu dans un prompt. A l'heure actuelle, je suis obligé de jouer avec la commande sleep et j'avoue que ce n'est ni propre, ni pratique.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#14

Message par Tlem »

Re-bonjour Oppenheimer.

Pour être clair, je n'ai pas remis en question votre capacité à connaitre la fonction de recherche du forum et je n'ai pas non plus utilisé le "J'envoi le demandeur chercher avec ce petit :roll: si agaçant ^_^)". Je vous ai dirigé vers un sujet explicite concernant la commande StdoutRead que vous avez trouvé à plusieurs reprises lors des vos recherches (et j'ai effectivement rajouté le petit truc qui vous agace ...).

Dans votre message précédent, vous dites :
J'avoue n'avoir absolument pas compris comment utiliser la fonction en question, et je me demandais si on ne pouvais pas simplifier la chose
De mon point de vue, les 15 lignes de code fournies par jguinch me sembles plus que simplifiées, surtout si vous faites abstraction de la partie propre à mkisofs et à l'affichage de la barre de progression, car dans ce cas le code se limite à 6/7 lignes.

Maintenant, si vous ne comprenez toujours pas, je vais essayer de vous donner quelques éléments supplémentaires :
Pour commencer, lisez ceci : http://www.autoitscript.fr/autoit3/docs ... utRead.htm

Voici le même code simplifié pour vos besoins et expliqué :

Code : Tout sélectionner

$STDOUT_CHILD = 2

; Lancement d'une ligne de commande DOS (DIR Example.au3) avec options de récupération des flux entrant Stdout
; La commande RUN renvoie dans la variable $iPID un PID (Process IDentifier) qui sera utilisé pour la lecture des flux.
$iPID = Run(@ComSpec & " /c DIR " & @WindowsDir & "\*.ini", @SystemDir, @SW_HIDE, $STDOUT_CHILD)

While 1 ; Boucle infinie pour lire le flux entrant de la console.
    $sOutput = StdoutRead($iPID) ; Lecture du retour console
    If @error Then ; Sortie de la boucle si le processus ferme ou si StdoutRead returne une erreur.
        ExitLoop ; Sortie de la boucle
    EndIf
    MsgBox(64, "Lecture Stdout:", $sOutput) ; Affiche le contenu de la ligne récupérée à chaque tour de boucle (tant qu'il n'y a pas d'erreur).
WEnd ; Fin de la boucle
En espérant que cela réponde à vos interrogations.
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Base de discussion sur un projet de script

#15

Message par orax »

Le message "Finished Installing" peut changer donc plutôt que de chercher à lire ce message il me semble plus judicieux de vérifier quel est le code de retour du script. Généralement quand le code = 0 c'est qu'il n'y a pas eu d'erreur.

Code : Tout sélectionner

$iReturn = RunWait('ping localhost')
ConsoleWrite($iReturn & @CRLF)
$iReturn = RunWait('ping ****') ; erreur et $iReturn = 1
ConsoleWrite($iReturn & @CRLF)
Il est aussi possible d'installer plusieurs logiciels d'un coup avec choco install pkg1 pkg2 pkgN ou un fichier packages.config > https://github.com/chocolatey/chocolate ... ndsInstall
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre