Comme vous le savez, nous ne pouvons pas faire de boucle de FileInstall avec une variable pour économiser du code, il faut écrire tous les FileInstall un par un, à la main.
C'est pourquoi j'ai créé un programme qui s'occupe de les créer pour vous, il suffit de lui indiquer les fichiers à inclure, les fichiers à exclure, les dossiers à excluse (voir aide sur le mask de _FileListToArrayRec)
Dans mon exemple, j'inclus tous les fichier, j'exclus les .au3, les .exe et deux png spécifiques, j'exclus les dossiers nommé "autre"
#include <File.au3>
Global $content = DirInstall("@ScriptDir", "@TempDir", "*|*.au3;*.exe;*backgroundLoading.png;*char_loading.png|autres", False)
ClipPut($content)
ConsoleWrite($content & @LF)
; ===================================================================================================================
; Func DirInstall($baseDir, $destDir, $mask = "*", $continueOnFind = True, $flag = 0)
;
; Créer une fonction contenant tous les FileInstall des fichiers demandés
;
; $baseDir = Dossier à copier
; $destDir = Dossier de destination
; $mask = Masque utilisé pour la recherche de fichier (paramètre envoyé à _FileListToArrayRec)
; $continueOnFile = Indique si l'on doit quand même exécuter les FileInstall même si le dossier de destination existe
; $flag = Indique si l'on doit écraser la destination
;
; Return:
; La fonction sous forme de string (à écrire dans un fichier, mettre dans le press papier, etc)
;
; Author: TommyDDR
; ===================================================================================================================
Func DirInstall($baseDir, $destDir, $mask = "*", $continueOnFind = True, $flag = 0)
Local $bDirTemp
Local $dDirTemp
If(StringRight($baseDir, 1) <> "\") Then $bDirTemp = $baseDir & "\"
If(StringRight($destDir, 1) <> "\") Then $dDirTemp = $destDir & "\"
Local $forCopy = TransformVar($bDirTemp)
Local $baseDir2 = StringReplace($bDirTemp, "@ScriptDir", ".")
Local $destDir2 = TransformVar($dDirTemp)
Local $bDirAff = '"' & $bDirTemp
Local $dDirAff = '"' & $dDirTemp
If($bDirTemp <> $baseDir2) Then
$bDirAff = '"' & $baseDir2
EndIf
If($dDirTemp <> $destDir2) Then
$dDirAff = $destDir & ' & "\'
EndIf
Local $folderToCopy = StringSplit($forCopy, "\", 3)
$folderToCopy = $folderToCopy[UBound($folderToCopy, 1)-2] & "\"
Local $return = "Func InstallFiles($flag = " & $flag & ")" & @CRLF
Local $fileList = _FileListToArrayRec($baseDir2, $mask, 0, 1, 1, 1)
If($flag = 0 And Not($continueOnFind)) Then
$return &= @TAB & 'If(FileExists(' & $dDirAff & $folderToCopy & '")) Then Return' & @CRLF
EndIf
$return &= @TAB & 'DirCreate(' & $dDirAff & $folderToCopy & '")' & @CRLF
For $i = 1 To $fileList[0]
If(StringInStr(FileGetAttrib($baseDir2 & $fileList[$i]), "D")) Then
$return &= @TAB & 'DirCreate(' & $dDirAff & $folderToCopy & $fileList[$i] & '")' & @CRLF
EndIf
Next
For $i = 1 To $fileList[0]
If(Not(StringInStr(FileGetAttrib($baseDir2 & $fileList[$i]), "D"))) Then
$return &= @TAB & 'FileInstall(' & $bDirAff & $fileList[$i] & '", ' & $dDirAff & $folderToCopy & $fileList[$i] & '", $flag)' & @CRLF
EndIf
Next
$return &= "EndFunc"
Return $return
EndFunc
Func TransformVar($var)
$var = StringReplace($var, "@AppDataCommonDir", @AppDataCommonDir)
$var = StringReplace($var, "@AppDataDir", @AppDataDir)
$var = StringReplace($var, "@CommonFilesDir", @CommonFilesDir)
$var = StringReplace($var, "@DesktopCommonDir", @DesktopCommonDir)
$var = StringReplace($var, "@DesktopDir", @DesktopDir)
$var = StringReplace($var, "@DocumentsCommonDir", @DocumentsCommonDir)
$var = StringReplace($var, "@FavoritesCommonDir", @FavoritesCommonDir)
$var = StringReplace($var, "@FavoritesDir", @FavoritesDir)
$var = StringReplace($var, "@HomePath", @HomePath)
$var = StringReplace($var, "@LocalAppDataDir", @LocalAppDataDir)
$var = StringReplace($var, "@MyDocumentsDir", @MyDocumentsDir)
$var = StringReplace($var, "@ProgramFilesDir", @ProgramFilesDir)
$var = StringReplace($var, "@ProgramsCommonDir", @ProgramsCommonDir)
$var = StringReplace($var, "@ProgramsDir", @ProgramsDir)
$var = StringReplace($var, "@ScriptDir", @ScriptDir)
$var = StringReplace($var, "@ScriptFullPath", @ScriptFullPath)
$var = StringReplace($var, "@ScriptName", @ScriptName)
$var = StringReplace($var, "@StartMenuCommonDir", @StartMenuCommonDir)
$var = StringReplace($var, "@StartMenuDir", @StartMenuDir)
$var = StringReplace($var, "@StartupCommonDir", @StartupCommonDir)
$var = StringReplace($var, "@StartupDir", @StartupDir)
$var = StringReplace($var, "@TempDir", @TempDir)
Return $var
EndFunc
Global $content = DirInstall("@ScriptDir", "@TempDir", "*|*.au3;*.exe;*backgroundLoading.png;*char_loading.png|autres", False)
ClipPut($content)
ConsoleWrite($content & @LF)
; ===================================================================================================================
; Func DirInstall($baseDir, $destDir, $mask = "*", $continueOnFind = True, $flag = 0)
;
; Créer une fonction contenant tous les FileInstall des fichiers demandés
;
; $baseDir = Dossier à copier
; $destDir = Dossier de destination
; $mask = Masque utilisé pour la recherche de fichier (paramètre envoyé à _FileListToArrayRec)
; $continueOnFile = Indique si l'on doit quand même exécuter les FileInstall même si le dossier de destination existe
; $flag = Indique si l'on doit écraser la destination
;
; Return:
; La fonction sous forme de string (à écrire dans un fichier, mettre dans le press papier, etc)
;
; Author: TommyDDR
; ===================================================================================================================
Func DirInstall($baseDir, $destDir, $mask = "*", $continueOnFind = True, $flag = 0)
Local $bDirTemp
Local $dDirTemp
If(StringRight($baseDir, 1) <> "\") Then $bDirTemp = $baseDir & "\"
If(StringRight($destDir, 1) <> "\") Then $dDirTemp = $destDir & "\"
Local $forCopy = TransformVar($bDirTemp)
Local $baseDir2 = StringReplace($bDirTemp, "@ScriptDir", ".")
Local $destDir2 = TransformVar($dDirTemp)
Local $bDirAff = '"' & $bDirTemp
Local $dDirAff = '"' & $dDirTemp
If($bDirTemp <> $baseDir2) Then
$bDirAff = '"' & $baseDir2
EndIf
If($dDirTemp <> $destDir2) Then
$dDirAff = $destDir & ' & "\'
EndIf
Local $folderToCopy = StringSplit($forCopy, "\", 3)
$folderToCopy = $folderToCopy[UBound($folderToCopy, 1)-2] & "\"
Local $return = "Func InstallFiles($flag = " & $flag & ")" & @CRLF
Local $fileList = _FileListToArrayRec($baseDir2, $mask, 0, 1, 1, 1)
If($flag = 0 And Not($continueOnFind)) Then
$return &= @TAB & 'If(FileExists(' & $dDirAff & $folderToCopy & '")) Then Return' & @CRLF
EndIf
$return &= @TAB & 'DirCreate(' & $dDirAff & $folderToCopy & '")' & @CRLF
For $i = 1 To $fileList[0]
If(StringInStr(FileGetAttrib($baseDir2 & $fileList[$i]), "D")) Then
$return &= @TAB & 'DirCreate(' & $dDirAff & $folderToCopy & $fileList[$i] & '")' & @CRLF
EndIf
Next
For $i = 1 To $fileList[0]
If(Not(StringInStr(FileGetAttrib($baseDir2 & $fileList[$i]), "D"))) Then
$return &= @TAB & 'FileInstall(' & $bDirAff & $fileList[$i] & '", ' & $dDirAff & $folderToCopy & $fileList[$i] & '", $flag)' & @CRLF
EndIf
Next
$return &= "EndFunc"
Return $return
EndFunc
Func TransformVar($var)
$var = StringReplace($var, "@AppDataCommonDir", @AppDataCommonDir)
$var = StringReplace($var, "@AppDataDir", @AppDataDir)
$var = StringReplace($var, "@CommonFilesDir", @CommonFilesDir)
$var = StringReplace($var, "@DesktopCommonDir", @DesktopCommonDir)
$var = StringReplace($var, "@DesktopDir", @DesktopDir)
$var = StringReplace($var, "@DocumentsCommonDir", @DocumentsCommonDir)
$var = StringReplace($var, "@FavoritesCommonDir", @FavoritesCommonDir)
$var = StringReplace($var, "@FavoritesDir", @FavoritesDir)
$var = StringReplace($var, "@HomePath", @HomePath)
$var = StringReplace($var, "@LocalAppDataDir", @LocalAppDataDir)
$var = StringReplace($var, "@MyDocumentsDir", @MyDocumentsDir)
$var = StringReplace($var, "@ProgramFilesDir", @ProgramFilesDir)
$var = StringReplace($var, "@ProgramsCommonDir", @ProgramsCommonDir)
$var = StringReplace($var, "@ProgramsDir", @ProgramsDir)
$var = StringReplace($var, "@ScriptDir", @ScriptDir)
$var = StringReplace($var, "@ScriptFullPath", @ScriptFullPath)
$var = StringReplace($var, "@ScriptName", @ScriptName)
$var = StringReplace($var, "@StartMenuCommonDir", @StartMenuCommonDir)
$var = StringReplace($var, "@StartMenuDir", @StartMenuDir)
$var = StringReplace($var, "@StartupCommonDir", @StartupCommonDir)
$var = StringReplace($var, "@StartupDir", @StartupDir)
$var = StringReplace($var, "@TempDir", @TempDir)
Return $var
EndFunc