[..] Insérer une fenêtre "enregistrer sous"

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

[..] Insérer une fenêtre "enregistrer sous"

#1

Message par greenkev »

Salut tout le monde,

J'avais créé un sujet avant celui-ci pour faire un script d'automatisation pour récupérer automatiquement l'exécutable du programme d'installation d'une application, le placer sur le serveur (car ce script est destiné aux clients de mon entreprise), le décompresse et lance l'exécutable.

Cet exécutable est à l'intérieur du dossier compressé "CD-AFi-WEB2.zip".

J'avais réussi à le faire grâce à votre aide et grâce à mon envie de réussir le script.

J'ai fais tester ce script par des collègues de bureau travaillant dans le même service que moi.

Ils m'ont fait remarqué que ça aurait été super de rajouter une fenêtre permettant à un utilisateur lambda d'enregistrer à n'importe quel endroit le dossier compressé.

J'ai regardé un petit peu la documentation d'Autoit sur internet et j'ai trouvé la variable FileSaveDialog pour faire ce que je veux.

Le souci est que je ne sais pas à quel endroit je dois placer ma variable pour que mon script soit fonctionnel.

De plus, il y a des options que je dois modifier mais je ne vois pas ce qu'il faut que je modifie ou que je dois rajouter :s.

Je vous mets le script complet pour vous donner un aperçu :
► Afficher le texte
Pouvez-vous m'aider s'il vous plait ?

Je vous en remercie par avance.

greenkev
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#2

Message par mikell »

mikell a écrit :Et la balise "spoiler" quand tu postes un long code, please
greenkev a écrit :Ok pour tes remarques je ferais attention la prochaine fois.
Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#3

Message par greenkev »

Mince j'ai complètement oublié (je suis très tête en l'air + les soucis auxquels je pense n'arrangent pas les choses).

Désolé mikell :s.

Je remets mon code avec la balise Spoiler.

Voilou :) :D.
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#4

Message par greenkev »

J'ai essayé de faire quelque chose avec la variable FileSaveDialog mais ça me fait planter mon script, comment ça se fait ?
► Afficher le texte
Est-ce que j'ai mal placé ma variable ?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#5

Message par mikell »

C'est un peu plus compliqué que ça, en fait ya 2 possibilités
- tu télécharges le dossier dans @HomeDrive & "\_SOURCES" et FileSaveDialog propose de le copier ailleurs
- ou tu proposes d'emblée de télécharger le fichier dans un endroit choisi avec le FileSaveDialog
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#6

Message par greenkev »

Je te remercie pour tes réponses.

La deuxième solution me convient mieux.

Du coup, comment je pourrais organiser ça dans le script ?
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#7

Message par mikell »

Ok mais là il va falloir remanier un peu le script, parce que le chemin du fichier zip téléchargé ne sera plus @HomeDrive & "\_SOURCES" mais celui choisi par l'utilisateur
Attention aussi si un nom différent de "CD-WEB2.zip" est rentré : si tu veux imposer le nom "CD-WEB2.zip" alors il vaut mieux utiliser FileSelectFolder

Code : Tout sélectionner

Global $chemin_complet

Func telechargeProgress()
   If _Ischecked($fichier1) and $stop = 0 Then

        $chemin_complet = FileSaveDialog("Choisir un emplacement :", @HomeDrive, "Fichiers d'archivage (*.zip)", 16, "CD-WEB2.zip")
        If @error Then Return
        If StringRight($chemin_complet, 4) <> ".zip" Then $chemin_complet &= ".zip"

         GuiCtrlSetData($telecharger_1, "Annuler")
         GuiCtrlSetState($quitter, $GUI_DISABLE)
         Local $hDownload = InetGet("ftp://nomutilisateur:motdepasse@ftp.***-*****.fr/CD-WEB2.zip", $chemin_complet, 1, 1)
          ;....
          ; etc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#8

Message par greenkev »

Alors j'ai réadapté ton script mais ça ne fonctionne pas :s.

J'ai enlevé le :
► Afficher le texte
J'ai modifié les bonnes valeurs pour le ftp.

Mais ça ne veut pas télécharger mon dossier compressé présent sur le FTP et par conséquent ça ne trouve mon exécutable.

Est-ce que c'est parce que je ne place pas les EndIf aux mauvais endroits :s ?

Je te mets ce que j'ai saisis :
► Afficher le texte
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#9

Message par mikell »

Tu es sûr de l'adresse ftp du fichier dans le InetGet ? ça marche en manuel ?
Voilà une modif de l'ancien code d'exemple de ton sujet précédent qui marche
► Afficher le texte
après évidemment faut adapter les variables partout dans le script pour le nouveau chemin/nom du fichier téléchargé
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#10

Message par greenkev »

Edit : Le téléchargement fonctionne mais pas l'extraction du dossier compressé :( :'(.

J'ai une question : comment mettre en place le fait de détecter si il y a assez d'espace disque disponible par rapport au chemin du lecteur de disque que l'utilisateur va renseigner ?

Je ne sais pas si tu as compris ma demande.

En gros, imaginons que le lecteur C:\ n'ait pas assez d'espace disque disponible et que le lecteur D:\ en ait.

Je veux que l'utilisateur quand il enregistre le dossier compressé dans le lecteur C: qu'une fenêtre le prévienne qu'il ne peut pas enregistrer dedans mais par contre quand l'utilisateur va vouloir enregistrer le dossier compressé dans lecteur D:\ q'une fenêtre le prévienne qu'il a assez d'espace disque disponible.

Conclusion : trouver un système pour reconnaitre l'espace disque disponible de chaque lecteur par rapport auxquels l'utilisateur va enregistrer le dossier compressé.

Car là le souci est que le message qu'il y ait assez d'espace disque dispo se lance avant de choisir le chemin pour le dossier compressé alors que j'aimerais l'avoir au moment de choisir le chemin grâce à la fenêtre "Enregistrer sous".
Si tu n'as pas compris ma demande, je te réexpliquerai.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#11

Message par mikell »

Pigé
Tu dois faire 2 choses : d'abord légèrement modifier la fonction de test comme ça

Code : Tout sélectionner

Func _IsSpaceOK($Size, $disk)
Local $iFreeSpace = Round(DriveSpaceFree($disk)*1024*1024)
If $iFreeSpace < $Size Then
   Return 0
Else
   Return 1
EndIf
EndFunc
Ensuite tu dois déplacer le test pour le faire juste avant le InetGet, par exemple comme ça

Code : Tout sélectionner

$drive = StringLeft($chemin_complet, 3)   ;<= retourne le lecteur, ex. D:\
If not _IsSpaceOK($SizeFile, $drive) Then 
   MsgBox (1024, "", "espace disque disponible insuffisant")
   Return   ;<= quitte la fonction
EndIf
Edit
Attention au mélange de pinceaux dans les variables en double

Code : Tout sélectionner

;Chemin du dossier "_SOURCES"
Global $Source_Dossier = @HomeDrive & "\_SOURCES"

;variable du chemin de destination menant au lecteur par défaut puis dans "\_SOURCES"
Global $path = @HomeDrive & "\_SOURCES"
: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 )
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#12

Message par greenkev »

Je te remercie pour ton aide mikell :) :D.

Alors j'ai testé ce que tu m'as demandé de modifier alors :

- La gestion de l'espace disque disponible entre les différents lecteurs de disque fonctionne parfaitement

Mes problèmes sont les suivants :

- Lorsque je veux quitter la fenêtre "enregistrer sous" avec la croix pour ne choisir aucun chemin pour enregistrer le dossier compressé, ça me met quand même un message me disant que j'ai assez d'espace disque disponible, est-il possible de ne mettre aucun message et quitter directement le script ?

- Le téléchargement du dossier compressé ne se lance pas lorsque je choisis mon chemin de destination, si tu veux la barre de progression n'avance pas.

- L'extraction du dossier compressé ne se lance pas

- Le lancement du programme d'installation "Install.exe" ne se lance pas :s.


Je te remets mon script tel que je l'ai modifié :
► Afficher le texte
J'espère que tu pourras m'aider.

Merci par avance :).
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#13

Message par mikell »

Le FileSaveDialog l'aurait mieux valu ne pas le changer de place
Je t'avais prévenu que ça allait mettre le souk dans les variables de chemin
ça devrait donner quelque chose comme ça (mais je peux pas le tester)
► Afficher le texte
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#14

Message par greenkev »

Le fichier est en train de se télécharger.

Je t'informerai de la suite des événements ;).

En tout cas, merci pour ta disponibilité ça fait plaisir :-).
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#15

Message par greenkev »

Alors le téléchargement s'effectue bien mais pas la décompression et par conséquent ni l'exécution du fichier "Install.exe".

Y-a-t-il un problème au niveau de la commande de décompression (global $command = $path7z & " x -o" & '"' & $chemin_complet) ?

Sinon ça doit extraire le dossier compressé et lancer le fichier "Install.exe" contenu dans le dossier.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#16

Message par mikell »

Essaye de mettre une msgbox avant la commande pour vérifier l'instruction et le chemin : Msgbox(0,"", $command)
Comme je t'ai dit c'est une partie du code que je peux pas tester
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#17

Message par greenkev »

Ok je vais tester ça.

Je reviens vers toi.

Edit : Le msgbox m'a affiché la bonne valeur pourtant, c'est très bizarre.

Tu peux le constater sur la capture d'écran :

http://hpics.li/1092ebd

D'où vient le problème :s ?

Après je t'avoue il y a des infos propres liées à mon entreprise dans le script du coup je n'ai pas le droit de te les communiquer sinon je l'aurais fais sans problème.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#18

Message par mikell »

Non, je peux pas tester parce que je n'ai pas 7zip et que je ne connais pas ses commandes
L'instruction que tu vérifies dans la msgbox, faudrait la tester dans un petit script à part pour chercher une erreur de syntaxe
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#19

Message par greenkev »

Je t'ai mis sur un hébergeur de fichiers le contenu de 7-zip :

http://www.envoyercefichier.com/downloa ... 88e4c.html

En fait, le dossier 7-zip doit être au même endroit que le fichier .au3 ou .exe.
greenkev
Niveau 3
Niveau 3
Messages : 42
Enregistré le : jeu. 25 avr. 2013 09:03
Status : Hors ligne

Re: [..] Insérer une fenêtre "enregistrer sous"

#20

Message par greenkev »

Je suis toujours bloqué au moment de la décompression qui ne fonctionne pas et je ne comprends pas pourquoi pourtant tout est bon (j'ai fais des vérifications avec des Msgbox".
Répondre