Page 2 sur 4

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 17:53
par mikell
Modifier le fichier à chaque donnée entrée, c'est lourdasse
Suggestion : stocker les données dans des variables

Code : Tout sélectionner

			Case $aPanel[1]
				Switch $nMsg[0]
					Case $hButton1
						$name = GUICtrlRead($hInput1)
						; MsgBox(32, "Test", $name)
				EndSwitch
			Case $aPanel[2]
				Switch $nMsg[0]
					Case $hButton2
						$language = GUICtrlRead($Combo1)
						; MsgBox(32, "Test", $language)
				EndSwitch
Et tout modifier en une seule fois à la fin avec un bouton "enregistrer" (avec la traditionnelle Msgbox de confirmation)

Code : Tout sélectionner

FileCopy("test.xml", ".\test.xml.bak")  ; backup
$s = FileRead("test.xml")
$s = StringRegExpReplace($s, '(?<=<PersonaName>)[^<]+', $name)
$s = StringRegExpReplace($s, '(?<=<Language>)[^<]+', $language)
; Msgbox(0,"", $s)
; FileDelete("test.xml")
; FileWrite("test.xml", $s)
Il va servir à quoi le champ "options" ?

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 18:04
par liberodark
Parfait j'ai réussi à le mettre ! mais il manque les fonctions sur les boutons.
Merci mikell je regarde cela plus tard car j'ai encore un peut de mal. (mais je souhaite optimiser le code après que tout soit fait)
Par contre comment faire pour dès que le launcher ce lance il fait une config.xml.bak une sauvegarde du fichier config ?

Cordialement

comment adapter ce code :

Code : Tout sélectionner

Func _SetName($sName, $sFilePath)
	Local $fFile, $sBuff = "", $sNewLine, $bEnd = false, $iCurrentLine = 1

	$fFile = FileOpen($sFilePath, 0) ; reading only
	Do
		$sBuff = FileReadLine($fFile)
		if (StringRegExp($sBuff,"\<PersonaName\>.*\<\/PersonaName\>")) Then
			$sNewLine = StringRegExpReplace($sBuff,"\<PersonaName\>.*\<\/PersonaName\>", "<PersonaName>" & $sName & "</PersonaName>")
			_FileWriteToLine($sFilePath, $iCurrentLine, $sNewLine, True)
			$bEnd = True
		EndIf
		$iCurrentLine+=1
	Until ($bEnd)

	FileClose($fFile)
EndFunc
à cela pour les boutons 3 et 4 du panel 4:

Code : Tout sélectionner

MsgBox(64, "Launcher", "Lancement du jeu !")
Run("Game\app.exe -appid 406170", "Game\")
Exit
Cordialement

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 18:38
par mikell

Code : Tout sélectionner

Case $aPanel[4]
	Switch $nMsg[0]
		Case $hButton3
			Run... etc
	EndSwitch

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 19:05
par liberodark
C'est bon j'ai trouvé mais j'ai un bug je crois bien

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 19:12
par mikell
Oublie le code de la fonction _setname() qui n'a rien à voir
Faut mettre ça dans la boucle while

Code : Tout sélectionner

While 1
	Sleep(10)
	$nMsg = GUIGetMsg(1)
	Switch $nMsg[1]
		Case $hMainGUI
			.....
		Case $aPanel[4]
			Switch $nMsg[0]
				Case $hButton3
					Run... etc
			EndSwitch
	EndSwitch
WEnd

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 19:14
par liberodark
C'est corrigé !

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 19:26
par liberodark
Donc maintenant auriez vous une idée de comment sauvegarder le fichier config.xml en config.xml.bak ?
Cela est il possible ?

Cordialement

PS : UN ÉNORME MERCI à toute les personnes qui mon aidé sur ce magnifique projet ^^

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 19:58
par blacksoul305
mikell a écrit :FileCopy("test.xml", ".\test.xml.bak") ; backup
mikell y a répondu en avance.

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 20:07
par liberodark
Ou doit je le mettre pour que cela ce fasse automatiquement au lancement mais sans répétition pour pas que ça re sauvegarde à chaque démarrage mais seulement une fois ?
Cela est faisable de sauvegarder juste au premier démarrage mais pas au autres ?
Sauf si il y a seulement la solution du bouton ?

Cordialement
PS : merci mikell pour cette fonction que je souhaite mettre ^^
Et merci blacksoul305 pour me l'avoir spécifié en citant mikell

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 20:50
par blacksoul305
Là aussi, plusieurs solutions s'offrent à toi.
  • Ajouter un champ dans le fichier config.xml
  • Créer un nouveau fichier
  • Écrire une clef dans le registre
Pour le fichier XML, le sujet cite/donne plein de fonctions.
Pour un nouveau fichier, se référer aux fonctions File...
Pour la solution du registre, voir les fonctions Reg...

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 21:12
par liberodark
Ajouter un champ dans le fichier config.xml
comment faire cela ?

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 21:21
par blacksoul305
Par champ je voulais dire une balise du style : <Updated>true</Updated>.Si la valeur est "true", alors on a pas besoin d'effectuer de changement, le launcher a déjà été configuré.
Après personnellement, dans un launcher, je ne vois pas l'intérêt de cela. Si jamais la personne fait des modifs, on modifie le fichier (le sauvegarde à la rigueur) et si elle n'a pas de modifs à faire, elle lance le jeu tout simplement.

EDIT : cela peut ne pas marcher également. Je pense notamment au fait que les jeux ont l'habitude de vérifier l'intégrité de leurs fichiers, et si jamais tu n'es pas censé toucher à ce config.xml, peut-être qu'il pourrait te crier dessus. L'autre solution serait la seconde de ma liste, utiliser un autre fichier. Les fichiers .INI sont efficaces pour ça. Tu trouveras tout ce dont tu as besoin sur le forum en plus.

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 21:26
par liberodark
OK cela me parait pas super pour le champ dans le xml.
Le quel est le mieux entre registres ou nouveau fichier.
C'est fonction est très importante.
Nouveau fichier me parait bien mais il faut que on puisse le restaurer.
Le fichier config peut être copiez en .bak cela ne pose pas de problème mais si cela peut ce faire tout seulement ce serait super

Cordialement

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 21:38
par blacksoul305
Chacune de ces possibilité ont des avantages et des inconvénients. L'écriture dans le registre est discrète, et l'utilisateur ne saura pas modifier par lui même la valeur (pas tous du moins). Cela dit c'est pas conseillé de toucher au registre quand on est débutant et si jamais l'utilisateur supprime ton programme, une clef inutile occupera une place dans le registre (il faut penser à l'enlever du coup). Le fichier quand à lui est simple à mettre en place et on peut vérifier son existence ou non avec une simple fonction. Si ce dernier est corrompu on peut le remplacer facilement. Le bémol c'est que l'utilisateur peut y toucher. A toi de voir !

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 21:44
par liberodark
Je préfère le fichier si vous avez idée de code pour tester et aussi donc vérifier son existence.
Registre je veut pas trop de trace.
Merci des renseignements

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 21:48
par blacksoul305
Je pense qu'avec la doc AutoIt, les fonctions File... et Ini..., l'outil de recherche sur le forum et les sections "Aide générale", "Tutoriels" tu devrais arriver à rédiger des bouts de code par toi même. Un programme c'est de la conception, du développement et beaucoup (beaucoup) de débogage. Je vais reprrendre cette phrase rendu célèbre de Yu-Gi-Oh : "A toi de jouer !".

Bonne chance :)

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 22:05
par mikell
si vous avez idée de code pour tester et aussi donc vérifier son existence.
If not FileExists(...) Then Filecopy(...)
Et dans le script, tu peux décider de forcer un FileCopy par l'action d'un bouton
Tu peux aussi choisir de nommer différemment plusieurs backups, en incluant dans leur nom un numéro, la date...
etc
Là on est dans du très très basique, quelque chose que tu aurais pu trouver facilement grâce au fichier d'aide d'AutoIt
Suggestion : voir/revoir les bases avant de poser ce genre de question sous peine de lasser les bonnes volontés ^^

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 22:52
par liberodark
Merci à vous pour c'est informations je vais chercher plus vers le ini.

Cordialement

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 23:19
par liberodark
Ok je pense avoir trouvé une solution en attendant !
Pour sauvegarder !
Mais je n'arrive pas à restaurer.

Voici la sauvegarde sous les conseils de mickel :

Code : Tout sélectionner

FileCopy("Game\config.xml", "Game\config.xml.bak") ; backup
Pour ma part je me suis dit que la restauration serait dans ce genre :

Code : Tout sélectionner

FileCopy("Game\config.xml.bak", "Game\config.xml") ; restore
J'arrive pas à trouver un exemple de restauration basique
J'ai aussi tenté un "FileDelete" puis FileCopy mais cela ne convient pas
Par contre j'ai trouvé la solution de sécurité ^^
Avant que l'utilisateur met son pseudo ce qui devrait être le cas a 90% cela sauvegarde le fichier ^^
Puis j'ai aussi mis une sauvegarde auto au démarrage ^^
J'ai encore fait mieux avec :

Code : Tout sélectionner

FileCopy("Game\config.xml", "Game\config.xml.save" & @MDAY & "." & @MON & "." & @HOUR & "." & @MIN) ; backup

Re: Launcher Personnalisé

Posté : jeu. 19 mai 2016 23:43
par orax
liberodark a écrit :Pour ma part je me suis dit que la restauration serait dans ce genre :

Code : Tout sélectionner

FileCopy("Game\config.xml.bak", "Game\config.xml") ; restore
Ça ne marchera pas si le fichier de destination existe déjà. La solution est dans la page FileCopy de la doc.