Bonjour. Je vais essayer d'être assez clair (pas toujours facile...)
L'énoncé : j'ai un script autoit compilé qui effectue sous condition des actions. (normal quoi

)
Les actions et conditions sont décrites dans un fichier ini.
Exemple :
Code : Tout sélectionner
[Firefox]
name=Firefox
file=setupFirefox.exe
params=-ms
checksum= eb574b236133e60c989c6f472f07827b
condition=NOT FileExists(@ProgramFilesDir & "\*firefox*")
L'exécutable compilé va tester si la condition définie dans le fichier INI est remplie, en utilisant Eval(). Si la condition est remplie, le programme défini dans la clé file s'exécutera.
Problème : j'aimerais pouvoir mettre plus de code dans la condition, par exemple :
► Afficher le texte
Code : Tout sélectionner
_notInstalled("firefox")
Func _notInstalled($displayName)
Local $uninstallKey = "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
Local $i = 0
While 1
$i += 1
Local $key = RegEnumKey($uninstallKey , $i)
If @error <> 0 Then ExitLoop
If StringInStr ( RegRead($uninstallKey & "\" & $key, "DisplayName") , $displayName) Then Return False
WEnd
Return True
EndFunc
Est-ce envisageable de faire un genre de Eval() sur une expression à plusieurs lignes, ? (je suis prêt à abandonner les fichiers INI mais je n'ai pas envie d'embarquer AutoIt3.exe)
Cela m'éviterait de faire évoluer l'exécutable...
Pour info : l'exécutable tourne sur environ 3000 postes et peut se mettre à jour de lui-même. Seulement, j'aimerais limiter ses mises à jour aux maj importantes (d'où l'externalisation de code).
Merci pour votre aide ou vos idées.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !