[R] Nouvelle variable utilisable pour plusieurs scripts ?

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
eln
Niveau 6
Niveau 6
Messages : 202
Enregistré le : sam. 28 juil. 2007 12:54
Status : Hors ligne

[R] Nouvelle variable utilisable pour plusieurs scripts ?

#1

Message par eln »

Bonjour

Je m'explique. Est-il possible de définir une variable pour plusieurs scripts sans devoir la définir pour chaque script.

Merci
Modifié en dernier par eln le sam. 01 sept. 2007 11:54, modifié 1 fois.
ani
Niveau 11
Niveau 11
Messages : 1826
Enregistré le : lun. 23 juil. 2007 12:31
Localisation : Bureau
Status : Hors ligne

#2

Message par ani »

Pour cela tu devra créer un fichié supplémentaire tanouvellefonction avec l'extension au3

tu y indique #include-once au début
tu y inscrit t'a variable ou divers fonction

et pour appeler le fichier nouvellefonction tu indique dans ton script principal le nom de ton fichier en include
#include 'manouvellefonction'

ou bien tu prend le fichier include-once et tu le met dans le dossier include comme çà pas trop de soucis ..

dans ton script tu indique comme pour les include normal avec le caractère <

Code : Tout sélectionner

 #include<tanouvellefonction>
les point au3 ne passe pas du tout :(
met le principe et a l'identique que celle utilisé pour les includes déjà presente dans autoit (pour certain fichier)
mais je me trompe peut-être suis novice au bout de ligne ^^'
Avatar du membre
eln
Niveau 6
Niveau 6
Messages : 202
Enregistré le : sam. 28 juil. 2007 12:54
Status : Hors ligne

#3

Message par eln »

Le problème est que je pensais déclarer ma variable par une fonction du type :

Code : Tout sélectionner

$var = FileSelectFolder("Choose a folder.", "")
Et ensuite utiliser cette variable pour indiquer le chemin à plusieurs scripts. A priori ce ne serait pas réalisable avec ta solution.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

#4

Message par Tlem »

Les autres scripts que vous lancé, sont-ils dépendant du premier (Celui qui contient l'utilisation du FileSelectFolder) ?
Font-il partie des includes ?

Si oui, alors pas de problème (Enfin ... je crois ;) )

Si non, il y à d'autres solutions :
- Le stockage de cette variable dans un fichier texte.
- Le stockage de cette variable dans un fichier au3 (Placé dans les includes des autres scripts) (Non fonctionnel si compilation)
- Dans le presse papier.
- Dans une variable système de Windows.
et le top du top :
- Dans la base de registre (Bien plus simple que n'importe quelle solution).

Exemple :

Code : Tout sélectionner

$var = FileSelectFolder("Choose a folder.", "")
RegWrite("HKEY_CURRENT_USER\Software\MonSoft", "Dossier", "REG_MULTI_SZ", $var)

$res = RegRead("HKEY_CURRENT_USER\Software\MonSoft", "Dossier")
Msgbox(64,"Mon dossier",$res)

; Si necessaire, à la fin du script (Pour nettoyer la 'variable') :
RegDelete ("HKEY_CURRENT_USER\Software\MonSoft")
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
eln
Niveau 6
Niveau 6
Messages : 202
Enregistré le : sam. 28 juil. 2007 12:54
Status : Hors ligne

#5

Message par eln »

Tlem a écrit :Les autres scripts que vous lancé, sont-ils dépendant du premier (Celui qui contient l'utilisation du FileSelectFolder) ?
Font-il partie des includes ?

Si oui, alors pas de problème (Enfin ... je crois ;) )
Pour l'instant, j'essaye d'améliorer mes scripts existants ayant découvert AutoIt depuis peu et ne connaissant pas encore toutes les possibilités.
Chaque application a son script.
Je lance un script qui les lance l'un après l'autre.

Code : Tout sélectionner

RunWait ("AutoIt3.exe 7zip.au3")
RunWait ("AutoIt3.exe AdobeReader.au3")
....
et par exemple 7zip.au3 :

Code : Tout sélectionner

FileChangeDir ("I:\Soutien\Commun")
RunWait ("7-Zip 4.42\7z442.exe /S")
Je voudrai les rendre universel car le "I:\Soutien\Commun" peut changer.
Avatar du membre
eln
Niveau 6
Niveau 6
Messages : 202
Enregistré le : sam. 28 juil. 2007 12:54
Status : Hors ligne

#6

Message par eln »

La solution avec inscription dans la base de registre me plait pas mal. Je vais essayer cela.

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

#7

Message par Tlem »

Si je puis me permettre, je vous suggère 2 approches.

La première, si vous tenez absolument à avoir un fichier au3 par programme à installer.
Modifier vos scripts au3 comme ceci (Pour 7zip par exemple) :

Code : Tout sélectionner

Func Install_7zip()
FileChangeDir ("I:\Soutien\Commun\")
RunWait ("7-Zip 4.42\7z442.exe /S")
EndFunc
Ensuite dans votre script principal, rajouter chaque fichier dans les includes, et appeler simplement la fonction.
Comme ceci :

Code : Tout sélectionner

#Include <7zip.au3>

; un peut de code
; ...

; Ici j'appel ma fonction d'installation de 7zip.
Install_7zip()
Bon tout ceci n'est quand même pas très logique, alors je vous conseil cette deuxième approche :

Un fichier contenant tout les codes d'installation :
Install.au3 :

Code : Tout sélectionner

#include-once

; On mémorise le chemin d'accès aux programmes d'install
$DirInstall="I:\Soutien\Commun\"

Func Install_7zip()
RunWait ($DirInstall & "7-Zip 4.42\7z442.exe /S")
EndFunc

Func Install_Rar()
RunWait ($DirInstall & "Winrar 3.70\Winrar.exe /S")
EndFunc
Ensuite dans votre programme principal, vous n'avez qu'a appeler les fonctions une a une.

Script_Principal.au3

Code : Tout sélectionner

#Include <Install.au3>

; un peut de code
; ...

Install_7zip()
Install_Rar()
 
Dans ce genre de configuration, vous pouvez aussi envoyer des paramètres aux fonctions que vous appeler (Le dossier ou ce trouve les fichiers par exemple).
Il vous faudra modifier les scripts comme ceci :
Install.au3 :

Code : Tout sélectionner

#include-once

Func Install_7zip($DirInstall)
RunWait ($DirInstall & "7-Zip 4.42\7z442.exe /S")
EndFunc

Func Install_Rar($DirInstall)
RunWait ($DirInstall & "Winrar 3.70\Winrar.exe /S")
EndFunc
Script_Principal.au3

Code : Tout sélectionner

#Include <Install.au3>

$DirInstall = FileSelectFolder("Choose a folder.", "")

Install_7zip($DirInstall)
Install_Rar($DirInstall)
Voilà, j'espère que ces quelques exemples vous apporterons un peut plus de lumière sur les possibilités qui vous sont offertes !
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
eln
Niveau 6
Niveau 6
Messages : 202
Enregistré le : sam. 28 juil. 2007 12:54
Status : Hors ligne

#8

Message par eln »

Tlem a écrit :Voilà, j'espère que ces quelques exemples vous apporterons un peut plus de lumière sur les possibilités qui vous sont offertes !
Désolé pas du tout.
Tlem a écrit :La première, si vous tenez absolument à avoir un fichier au3 par programme à installer.
Pas spécialement. L'avantage pour moi est que si un programme change de version ou le script plante, je retravaille juste le script concerné.

Bon résumons, la première approche me permet de faire la même chose en un peu plus propre.

La deuxième, je suis largué. Je vais étudier cela au calme. Est-elle valable pour des scripts d'installation non silencieuse ?

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

#9

Message par Tlem »

eln a écrit :La deuxième, je suis largué. Je vais étudier cela au calme. Est-elle valable pour des scripts d'installation non silencieuse ?
C'est la même chose que pour des scripts indépendants, la seule différence, c'est la manière de les appeler.
Au lieu de lancer une autre version de AutoIt a chaque lancement d'un script, vous appeler sa fonction.
L'avantage, c'est que tout est dans le même script, et les variables sont en commun.
Vous pouvez appeler les fonctions a votre grès, dans l'ordre ou le désordre (Cela n'a aucune espèce d'importance).

Pour vous y retrouvé, présenter les choses comme ceci :

Code : Tout sélectionner

#include-once

; On mémorise le chemin d'accès aux programmes d'install
$DirInstall="I:\Soutien\Commun"

; **************************************************
; Installation de 7Zip
; **************************************************
Func Install_7zip()
RunWait ($DirInstall & "7-Zip 4.42\7z442.exe /S")
EndFunc

; **************************************************
; Installation de Winrar
; **************************************************
Func Install_Rar()
RunWait ($DirInstall & "Winrar 3.70\Winrar.exe /S")
EndFunc
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é".
Répondre