#region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Icon=icone.ico #AutoIt3Wrapper_Res_Fileversion=1.0 #AutoIt3Wrapper_Res_LegalCopyright=aurel2108 #AutoIt3Wrapper_Res_Language=1036 #AutoIt3Wrapper_Run_Tidy=y #AutoIt3Wrapper_Run_Obfuscator=y #endregion ;**** Directives created by AutoIt3Wrapper_GUI **** #include #include #include #include #include #include <7Zip.au3> #include Const $VERSION = "1.0" InetGet("http://minstaller.googlecode.com/svn/trunk/mods.ini", @AppDataCommonDir & '\mods.ini') InetGet("http://minstaller.googlecode.com/svn/trunk/texture-pack.ini", @AppDataCommonDir & '\texture-pack.ini') Const $iniMod = @AppDataCommonDir & '\mods.ini' Const $iniTP = @AppDataCommonDir & '\texture-pack.ini' $mInstaller = GUICreate("mInstaller", 619, 445, 192, 124) GUISetIcon("icone.ico", -1) GUISetState() $help = GUICtrlCreateMenu("Aide") $help_about = GUICtrlCreateMenuItem("A propos de...", $help) $mod_button = GUICtrlCreateButton("Installer un mod", 80, 88, 177, 89) $tp_button = GUICtrlCreateButton("Installer un texture-pack", 338, 88, 177, 89) While 1 $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop If $msg = $help_about Then About() If $msg = $mod_button Then ChoixMod() If $msg = $tp_button Then ChoixTP() WEnd GUIDelete($mInstaller) Func InfoMod($mod) $ini = $iniMod $inicontent = IniReadSectionNames($ini) If _ArraySearch($inicontent, $mod) Then $infomod = GUICreate("Informations", 300, 150) GUISetIcon("icone.ico", -1) GUISetState() $nom = IniRead($ini, $mod, "name", "No") $description = IniRead($ini, $mod, "description", "No") $vMinecraft = IniRead($ini, $mod, "version", "No") $requis = IniRead($ini, $mod, "requis", "No") $texte = GUICtrlCreateLabel('Nom : ' & $nom & @CRLF & 'Requiers : ' & $requis & @CRLF & 'Description : ' & $description & @CRLF & 'Compatible avec Minecraft ' & $vMinecraft, 15, 10, 290, 140) While 1 Local $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop WEnd GUIDelete($infomod) EndIf EndFunc ;==>InfoMod Func ChoixMod() $choixmodwin = GUICreate("Installer un mod", 300, 150) GUISetIcon("icone.ico", -1) GUISetState() $label = GUICtrlCreateLabel("Choisissez le mod à installer puis cliquer sur " & '"Installer"' & ".", 15, 10) $installmodbutton = GUICtrlCreateButton("Installer", 28, 100, 100, 30) $infomodbutton = GUICtrlCreateButton("Infos", 171, 100, 100, 30) $choixmod = GUICtrlCreateCombo("Choisissez le mod", 50, 50, 200, 30) $listemods = IniReadSectionNames($iniMod) Local $i $i2 = '' For $i = 1 To $listemods[0]; We have an array with three elements but the last index is two. $i2 &= '|' & $listemods[$i] Next GUICtrlSetData(-1, $i2, $listemods[1]) While 1 Local $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop If $msg = $installmodbutton Then InstallMod(GUICtrlRead($choixmod)) If $msg = $infomodbutton Then InfoMod(GUICtrlRead($choixmod)) WEnd GUIDelete($choixmodwin) EndFunc ;==>ChoixMod Func InstallMod($mod, $ok = True) $iniModcontent = IniReadSectionNames($iniMod) If _ArraySearch($iniModcontent, $mod) Then If IniRead($iniMod, $mod, "requis", "No") <> "No" And IniRead($iniMod, $mod, "requis", "No") <> "" Then If StringInStr(IniRead($iniMod, $mod, "requis", "No"), ";") Then $requis = StringExplode(IniRead($iniMod, $mod, "requis", "No"), ";") $i = 1 ConsoleWrite("array" & @CRLF) ;_ArrayDisplay($requis) While $i <= $requis[0] ConsoleWrite($requis[$i] & @CRLF) $download = InetGet(IniRead($iniMod, $requis[$i], "link", "No"), @TempDir & IniRead($iniMod, $requis[$i], "file", "No")) _7ZIPExtractEx(0, @TempDir & IniRead($iniMod, $requis[$i], "file", "No"), @TempDir & "\mInstaller\", 1) $i = $i + 1 WEnd Else ConsoleWrite("one" & @CRLF) $requis = IniRead($iniMod, $mod, "requis", "No") ConsoleWrite($requis & @CRLF) $download = InetGet(IniRead($iniMod, $requis, "link", "No"), @TempDir & IniRead($iniMod, $requis, "file", "No")) _7ZIPExtractEx(0, @TempDir & IniRead($iniMod, $requis, "file", "No"), @TempDir & "\mInstaller\", 1) EndIf EndIf $download = InetGet(IniRead($iniMod, $mod, "link", "No"), @TempDir & IniRead($iniMod, $mod, "file", "No")) _7ZIPExtractEx(0, @TempDir & IniRead($iniMod, $mod, "file", "No"), @TempDir & "\mInstaller\", 1) $Jar = _FileListToArray(@TempDir & "\mInstaller\Jar\") $Resources = _FileListToArray(@TempDir & "\mInstaller\Resources\") If FileExists(@AppDataDir & '\.minecraft\bin\minecraft.jar') Then _7ZipDelete(0, @AppDataDir & '\.minecraft\bin\minecraft.jar', 'META-INF') ProgressOn("Installation", "Avancée de l'installation...") ProgressSet(0) $i = 1 While $i <= $Jar[0] _7ZIPAdd(0, @AppDataDir & '\.minecraft\bin\minecraft.jar', @TempDir & "\mInstaller\Jar\" & $Jar[$i], 1) $i = $i + 1 ProgressSet((($i - 1) / $Jar[0]) * 100) WEnd ProgressOff() If IsArray($Resources) Then DirCopy(@TempDir & "\mInstaller\Resources\", @AppDataDir & '\.minecraft\resources\', 1 + 8) EndIf FileDelete(@TempDir & "\mInstaller\*.*\*.*\*.*\*.*") If $ok == True Then MsgBox(64, 'Installation', "Installation terminée avec succès.") EndIf Else MsgBox(16, "Erreur.", "Votre minecraft.jar est introuvable, merci de bien vouloir indiquer son emplacement.", 10) $emplacement = FileOpenDialog("Sélectionnez le minecraft.jar", "", "Fichiers jar (minecraft.jar)") If @error Then Else _7ZipDelete(0, $emplacement, 'META-INF', 1) ProgressOn("Progression...", "Avancement de l'installation...") ProgressSet(0) $i = 1 While $i <= $Jar[0] _7ZIPAdd(0, $emplacement, @TempDir & "\mInstaller\Jar\" & $Jar[$i], 1) $i = $i + 1 ProgressSet((($i - 1) / $Jar[0]) * 100) WEnd ProgressOff() If IsArray($Resources) Then DirCopy(@TempDir & "\mInstaller\Resources\", StringReplace($emplacement, "\bin\minecraft.jar", '\resources\'), 1 + 8) EndIf FileDelete(@TempDir & "\mInstaller\*.*\*.*\*.*\*.*") If $ok == True Then MsgBox(64, 'Installation', "Installation terminée avec succès.") EndIf EndIf FileDelete(@TempDir & "\mInstaller\*.*\*.*\*.*\*.*") DirRemove(@TempDir & "\mInstaller\", 1) EndIf Else Return -1 EndIf EndFunc ;==>InstallMod Func InfoTP($TP) $ini = $iniTP $inicontent = IniReadSectionNames($ini) If _ArraySearch($inicontent, $TP) Then $infomod = GUICreate("Informations", 300, 150) GUISetIcon("icone.ico", -1) GUISetState() $nom = IniRead($ini, $TP, "name", "No") $description = IniRead($ini, $TP, "description", "No") $vMinecraft = IniRead($ini, $TP, "version", "No") $mcpatcher = IniRead($ini, $TP, "mcpatcher", "No") If $mcpatcher == '' Then $mcpatcher = 'Non' $texte = GUICtrlCreateLabel('Nom : ' & $nom & @CRLF & 'McPatcher requis ? : ' & $mcpatcher & @CRLF & 'Description : ' & $description & @CRLF & 'Compatible avec Minecraft ' & $vMinecraft, 15, 10, 290, 140) While 1 Local $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop WEnd GUIDelete($infomod) EndIf EndFunc ;==>InfoTP Func ChoixTP() $choixTPwin = GUICreate("Installer un texture pack", 300, 150) GUISetIcon("icone.ico", -1) GUISetState() $label = GUICtrlCreateLabel("Choisissez le texture pack à installer puis cliquer sur " & '"Installer"' & ".", 5, 10) $installTPbutton = GUICtrlCreateButton("Installer", 28, 100, 100, 30) $infoTPbutton = GUICtrlCreateButton("Infos", 171, 100, 100, 30) $choixTP = GUICtrlCreateCombo("Choisissez le texture pack", 50, 50, 200, 30) $listeTP = IniReadSectionNames($iniTP) Local $i $i2 = '' For $i = 1 To $listeTP[0]; We have an array with three elements but the last index is two. $i2 &= '|' & $listeTP[$i] Next GUICtrlSetData(-1, $i2, $listeTP[1]) While 1 Local $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop If $msg = $installTPbutton Then InstallTP(GUICtrlRead($choixTP)) If $msg = $infoTPbutton Then InfoTP(GUICtrlRead($choixTP)) WEnd GUIDelete($choixTPwin) EndFunc ;==>ChoixTP Func InstallTP($TP) $iniTPcontent = IniReadSectionNames($iniTP) If _ArraySearch($iniTPcontent, $TP) Then DirCreate(@TempDir & "\mInstaller\") $download = InetGet(IniRead($iniTP, $TP, "link", "No"), @TempDir & "\mInstaller\" & IniRead($iniTP, $TP, "file", "No")) ConsoleWrite(@TempDir & "\mInstaller\" & IniRead($iniTP, $TP, "file", "No")) If FileExists(@AppDataDir & '\.minecraft\bin\minecraft.jar') Then FileCopy(@TempDir & "\mInstaller\" & IniRead($iniTP, $TP, "file", "No"), @AppDataDir & "\.minecraft\texturepacks\", 1 + 8) MsgBox(64, 'Installation', "Installation terminée avec succès.") Else $emplacement = '' $continue = True Do $emplacement = FileSelectFolder("Sélectionnez votre .minecraft", @HomeDrive) If $emplacement == '' Then $continue = False ExitLoop EndIf Until StringInStr($emplacement, '.minecraft') <> 0 If $continue <> False Then FileCopy(@TempDir & "\mInstaller\" & IniRead($iniTP, $TP, "file", "No"), $emplacement & "\texturepacks\", 1 + 8) MsgBox(64, 'Installation', "Installation terminée avec succès.") EndIf EndIf DirRemove(@TempDir & "\mInstaller\", 1) Else Return -1 EndIf EndFunc ;==>InstallTP Func About() $about = GUICreate("A propos de...", 300, 150) GUISetIcon("icone.ico", -1) GUISetState() $label = GUICtrlCreateLabel("mInstaller v" & $VERSION & " crée par aurel2108" & @CRLF & @CRLF & "Cet outil à pour but de faciliter l'installation de mods et de texture packs pour Minecraft.", 15, 10, 300, 150) While 1 Local $msg = GUIGetMsg() If $msg = $GUI_EVENT_CLOSE Then ExitLoop WEnd GUIDelete($about) EndFunc ;==>About Func StringExplode($sString, $sDelimiter, $sLimit = 0) If $sLimit > 0 Then ;Replace delimiter with NULL character using given limit $sString = StringReplace($sString, $sDelimiter, Chr(0), $sLimit) ;Split on NULL character, this will leave the remainder in the last element $sDelimiter = Chr(0) ElseIf $sLimit < 0 Then ;Find delimiter occurence from right-to-left $iIndex = StringInStr($sString, $sDelimiter, 0, $sLimit) If $iIndex Then ;Split on left side of string only $sString = StringLeft($sString, $iIndex - 1) EndIf EndIf Return StringSplit($sString, $sDelimiter, 1) EndFunc ;==>StringExplode