Page 1 sur 1

[R] Masquer une installation

Posté : mer. 05 févr. 2014 10:17
par Andranik
Bonjour tout le monde :)

Je voulais savoir si il été possible de masquer une installation?
Le but est d'installer plusieurs logiciel automatiquement mais de ne pas voir les différents étapes de l'installation... les fenêtre qui s'ouvre qui se ferme... mais seulement (exemple) Une Gui avec une barre qui défile avec (toujours ex)
étapes 1/10 de l'installation...

J'ai déjà essayer WinSetTrans et c'est pas top top.

Pouvez vous m'aider svp?

Merci 8) 8) 8)

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 12:06
par Hugues
Salut, pour faire disparaitre tes fenetres...

Tu as le ShellExecute() avec showflag (@SW_HIDE) pour masquer...

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 13:29
par Andranik
Hugues a écrit :Salut, pour faire disparaitre tes fenetres...

Tu as le ShellExecute() avec showflag (@SW_HIDE) pour masquer...
Merci pour la repense rapide.
Voilà un exemple d'une installation automatique VLC
Mais cela ne cache pas la fenêtre :-(

Code : Tout sélectionner

ShellExecute ("logiciel\vlc.exe",@SW_HIDE)
   WinWaitActive("Installer Language", "Please select a language.")

   send("{ENTER}")
   WinWaitActive("Installation de VLC media player 2.1.2", "Bienvenue dans le programme d'installation de VLC media player 2.1.2")
  
   send("{ENTER}")
   WinWaitActive("Installation de VLC media player 2.1.2", "Licence utilisateur")
  
   send("{ENTER}")
   WinWaitActive("Installation de VLC media player 2.1.2", "Choisissez les composants")

   send("{ENTER}")
   WinWaitActive("Installation de VLC media player 2.1.2", "Choisissez le dossier d'installation")
 
   send("{ENTER}")
 

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 13:52
par jguinch

Code : Tout sélectionner

RunWait("vlc-2.1.3-win32.exe /S /NCRC")

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 14:44
par Andranik
jguinch a écrit :

Code : Tout sélectionner

RunWait("vlc-2.1.3-win32.exe /S /NCRC")
Bonjour jguinch,

Le problème c'est que on ne peut pas rajouter un "/S /NCRC" a tous les logiciels. VLC été simplement un example mais j'ai besoin également des logiciel comme "Photoshop", "OpenOffice" ou autres. J'ai utilisé USSF pour savoir si il y a des argument a ajouter.

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 15:32
par Hugues

Code : Tout sélectionner

ShellExecute ("logiciel\vlc.exe", "", "", "", @SW_HIDE)
?

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 16:29
par TommyDDR
Vous ne pourrez pas avec un run ou shellexecute, en effet, il incombe au programme lancé de prendre en compte ou non le @SW_HIDE.
Il y aura toujours des programmes qui ne le prendront pas en compte.
Par exemple, mspaint.exe le prend en compte alors que calc.exe non.

Code : Tout sélectionner

Local $PID1 = Run("mspaint.exe", "", @SW_HIDE)
Local $PID2 = Run("calc.exe", "", @SW_HIDE)
Sleep(3000)
ProcessClose($PID1)
ProcessClose($PID2)
Une solution serait de faire un :

Code : Tout sélectionner

WinSetState("VotreFenetre", "", @SW_HIDE)
Les ControlClick fonctionneront toujours

Faites le test :

Code : Tout sélectionner

Run("calc.exe")
Local $hWnd = WinWaitActive("Calculatrice")
WinSetState($hWnd, "", @SW_HIDE)
Sleep(500)
ControlClick($hWnd, "", "[CLASS:Button; INSTANCE:15]")
ControlClick($hWnd, "", "[CLASS:Button; INSTANCE:15]")
ControlClick($hWnd, "", "[CLASS:Button; INSTANCE:15]")
Sleep(500)
WinSetState($hWnd, "", @SW_SHOW)

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 16:53
par Andranik
Hugues a écrit :

Code : Tout sélectionner

ShellExecute ("logiciel\vlc.exe", "", "", "", @SW_HIDE)
?
Non plus, cela ne fonctionne pas :/

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 17:01
par Andranik
Il est peut être possible de faire exécuter ces logiciel dans une Gui? puis de la cacher ou la transformer en une barre de progression ?

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 18:05
par Andranik
TommyDDR a écrit :Vous ne pourrez pas avec un run ou shellexecute, en effet, il incombe au programme lancé de prendre en compte ou non le @SW_HIDE.
Il y aura toujours des programmes qui ne le prendront pas en compte.
Par exemple, mspaint.exe le prend en compte alors que calc.exe non.

Code : Tout sélectionner

Local $PID1 = Run("mspaint.exe", "", @SW_HIDE)
Local $PID2 = Run("calc.exe", "", @SW_HIDE)
Sleep(3000)
ProcessClose($PID1)
ProcessClose($PID2)
Une solution serait de faire un :

Code : Tout sélectionner

WinSetState("VotreFenetre", "", @SW_HIDE)
Les ControlClick fonctionneront toujours

Faites le test :

Code : Tout sélectionner

Run("calc.exe")
Local $hWnd = WinWaitActive("Calculatrice")
WinSetState($hWnd, "", @SW_HIDE)
Sleep(500)
ControlClick($hWnd, "", "[CLASS:Button; INSTANCE:15]")
ControlClick($hWnd, "", "[CLASS:Button; INSTANCE:15]")
ControlClick($hWnd, "", "[CLASS:Button; INSTANCE:15]")
Sleep(500)
WinSetState($hWnd, "", @SW_SHOW)

Bonjour TommyDDR

Merci pour l'exemple, j'ai déjà essayer de le faire de cette façon mais ce qui me dérange un peut c'est d'être obliger a faire ce ci pour seulement 3 click

Code : Tout sélectionner

Run("\logiciel\vlc.exe")
WinWaitActive("Installer Language", "Please select a language.")
WinSetState("Installer Language", "Please select a language.", @SW_HIDE)
ControlClick("Installer Language", "", "[CLASS:Button; INSTANCE:1]")
Sleep(500)
WinWaitActive("Installation de VLC media player 2.1.2", "Bienvenue dans le programme d'installation de VLC media player 2.1.2")
WinSetState("Installation de VLC media player 2.1.2", "Bienvenue dans le programme d'installation de VLC media player 2.1.2", @SW_HIDE)
ControlClick("Installation de VLC media player 2.1.2", "", "[CLASS:Button; INSTANCE:2]")
Sleep(500)
WinWaitActive("Installation de VLC media player 2.1.2", "")
WinSetState("Installation de VLC media player 2.1.2", "", @SW_HIDE)
ControlClick("Installation de VLC media player 2.1.2", "", "[CLASS:Button; INSTANCE:2]")
Sleep(500)
WinWaitActive("Installation de VLC media player 2.1.2", "")
WinSetState("Installation de VLC media player 2.1.2", "", @SW_HIDE)
ControlClick("Installation de VLC media player 2.1.2", "", "[CLASS:Button; INSTANCE:2]")
Sleep(5000)
WinSetState("Installation de VLC media player 2.1.2", "", @SW_show)
 

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 18:10
par Andranik
Et en plus de ce ci c'est que a chaque fois que la fenêtre s'ouvre on la vois puis elle se cache.

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 19:50
par TommyDDR
Malheureusement je ne vois pas d'autre possibilité.
Vous pouvez inclure la fenêtre dans une de vos gui (_WinAPI_SetParent()), mais une fois de plus, il vous faut le handle de la fenêtre, et donc, celle-ci sera affichée.

Re: [..] Masquer une installation

Posté : mer. 05 févr. 2014 20:43
par jguinch
Andranik a écrit :Le problème c'est que on ne peut pas rajouter un "/S /NCRC" a tous les logiciels. VLC été simplement un example mais j'ai besoin également des logiciel comme "Photoshop", "OpenOffice" ou autres. J'ai utilisé USSF pour savoir si il y a des argument a ajouter.
En général, les logiciels "de base" sont installables de manière automatique voir silencieuse. On trouve pas mal d'infos sur ITNinja (en autres).
D'accord, ça ne répond pas à ta question, mais comme il a été déjà discuté quelques fois ici, l'installation avec la méthode du clic devrait être à utiliser en dernier recours. C'est pourquoi je te suggère de rechercher une solution "propre" pour chacune des tes installations. Le temps que tu mettras pour trouver la bonne ligne de commande sera peut-être (pas forcément) plus long que le codage d'un script, mais tu auras une solution plus sûre.

Juste par curiosité, qu'est-ce que tu as comme applications à installer ?

Re: [R] Masquer une installation

Posté : jeu. 06 févr. 2014 13:25
par Andranik
Bonjour,

Merci pour vos repense :)

Les logiciel que je veux installer c'est du genre NetoWatcher Pour des douchette, des logiciel de Caisse quoi...
Merci je vais voir si je trouve quel que chose qui me convient.

Re: [..] Masquer une installation

Posté : jeu. 06 févr. 2014 15:30
par sksbir
Bonjour

Masquer une installation consiste à la rendre
- silencieuse ( c'est à dire sans fenêtres autres que celles désirées ),
- et autonome ( c'est à dire sans que l'installation ne pose de question au cours de sa progression ).

en anglais : silent and unattended
Voici le document qui m'a toujours servi de référence : http://unattended.sourceforge.net/installers.php

En la matière, la règle, c'est qu'il n'y a pas de règle : chaque produit est spécifique, même si avec l'expérience, on s'aperçoit qu'il existe des familles de produit dont le regroupement vient de la façon dont ils ont été packagés ( microsoft/MSI , nullsoft ,etc... )

La bonne démarche consiste à suivre ceci dans l'ordre :
- lire la documentation du fournisseur
- chercher sur internet "silent unattended <le_soft_a_installer>"

Puis pour les cas extrêmes et désespérés essayer de repackager l'installation ou utiliser autoit pour simuler les actions de l'utilisateur
Autoit m'a servi une seule fois pour fermer une fenêtre récalcitrante après avoir rendu le processus d'installation presque completement silencieux via la doc fournisseur... (tout ça pour dire qu'on peut mixer les méthodes, mais qu'il faut faire les chose dans l'ordre que j'indique : d'abord suivre la doc, et si ça résiste, passer à la suite...

Bon courage. 8)