#NoEnv

; Pour la suite, on définit de manière explicite le répertoire de travail
SetWorkingDir %A_ScriptDir%

; récupération de la lettre du lecteur
SplitPath, A_ScriptDir, , , , , p_Drive
b_Jar = 1
b_Exe = 1
b_Dll = 1

Loop, %0%
{
	s_Param := %A_Index%
	If (s_Param = "-nogui")
		b_Gui := "false"
	If (s_Param = "-nojar")
		b_Jar = 0
	If (s_Param = "-noexe")
		b_Exe = 0
	If (s_Param = "-nodll")
		b_Dll = 0
	If (InStr(FileExist(s_Param), "D"))
		p_Folder := s_Param
}

If (p_Folder = "")
	{
	FileSelectFolder, p_Folder, %p_Drive%, , Sélectionnez le dossier à traiter :
	If ErrorLevel
		ExitApp
	}

If (b_Gui = "false")
	Gosub Compression

Gui, Add, Text, x6 y2 w190 h20 , Recompression des fichiers suivants :
Gui, Add, CheckBox, x26 y22 w170 h20 Checked%b_Jar% vb_Jar, Archives Jar (*.jar)
Gui, Add, CheckBox, x26 y42 w170 h20 Checked%b_Exe% vb_Exe, Exécutables (*.exe)
Gui, Add, CheckBox, x26 y62 w170 h20 Checked%b_Dll% vb_Dll, Bibliothèques (*.dll)
Gui, Add, Button, x6 y82 w190 h30 gCompression, Feu !
; Generated using SmartGUI Creator 4.0
Gui, Show, x131 y91 h120 w202, Compressor
Return

GuiClose:
ExitApp

Compression:
{
	Gui, Submit
	; on s'occupe d'abord d'upx
	s_ListFiles := ""
	If b_Exe
		{
		Loop, %p_Folder%\*.exe, 0, 1
			{
			s_ListFiles .= """" . A_LoopFileLongPath . """ "
			}
		}
	If b_Dll
		{
		Loop, %p_Folder%\*.dll, 0, 1
			{
			s_ListFiles .= """" . A_LoopFileLongPath . """ "
			}
		}
	If s_ListFiles
		RunWait, upx.exe %s_ListFiles%
	s_ListFiles := ""
	If b_Jar
		{
		Loop, %p_Folder%\*.jar, 0, 1
			{
			s_ListFiles .= A_LoopFileLongPath . "|"
			}
		StringTrimRight, s_ListFiles, s_ListFiles, 1
		Loop, parse, s_ListFiles, |
			{
			f_File := A_LoopField
			RunWait, 7za.exe x %f_File% -o"%A_Temp%\ReJar"
			FileDelete, %f_File%
			RunWait, 7za.exe a -tzip -mx9 %f_File% .\ReJar\*, %A_Temp%
			FileRemoveDir, %A_Temp%\ReJar, 1
			}
		}

ExitApp
}