[résolu]modifier le format de la version de compilation

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
fredmame
Niveau 3
Niveau 3
Messages : 34
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

[résolu]modifier le format de la version de compilation

#1

Message par fredmame »

Bonjour à tous,

Je suis extrêmement content de ce langage Autoit qui me permet de faire des petits programmes d'usage perso.
Une petite chose me chagrine :

dans mon code j'ai :

Code : Tout sélectionner

#AutoIt3Wrapper_Res_Fileversion=2.0.0.111
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
lors de la compilation (avec SciTe 4.4.6) ce qui s'incrémente c'est le dernier groupe de chiffres :
2.0.0.x => 2.0.0.x+1 exemple : 2.0.0.111 passe à 2.0.0.112
j'aimerai que lors de la compilation, l'incrémentation automatique puisse se faire sur le groupe souhaité:
j'aimerai que ca puisse passer de 2.1 à 2.2 puis à 2.3 par exemple et non 2.0.0.111 à 2.0.0.112
Est-ce possible ?

Merci beaucoup de votre aide
Fred.
Modifié en dernier par fredmame le jeu. 29 sept. 2022 22:19, modifié 1 fois.
fredmame
Niveau 3
Niveau 3
Messages : 34
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Re: modifier le format de la version de compilation

#2

Message par fredmame »

je me réponds à moi-même :
une partie de la réponse est dans le fichier AutoIt3Wrapper.au3

Code : Tout sélectionner

	If $IsFileVersion Then
		; Auto Increment when requested	
		$INP_Fileversion_New = $T_Numbers[1] & "." & $T_Numbers[2] & "." & $T_Numbers[3] & "." & $T_Numbers[4]
		If $INP_Fileversion_AutoIncrement <> "n" And $INP_Fileversion_Use_Template = '' Then
			;c'est ici que je peux modifier le formatage de l'incrementation
			$INP_Fileversion_New = $T_Numbers[1] & "." & $T_Numbers[2]  + 1 & "." & $T_Numbers[3] & "." & $T_Numbers[4]
		EndIf
	EndIf
	Return $T_Numbers[1] & "." & $T_Numbers[2] & "." & $T_Numbers[3] & "." & $T_Numbers[4]
EndFunc   ;==>Valid_FileVersion
j'ai simplement modifié la position du chiffre "+" :
$T_Numbers[2] + 1
au lieu de $T_Numbers[4] + 1

J'aimerais bien qu'on puisse parametrer cette partie, et pas aller de la version 2.1 à la version 2.8989898989
pouvoir définir jusqu'à quel chiffre, on change de position est aller de 2.1 à 2.99 puis ca passerait à 3.0 par exemple.
C'est un détail mais ca serait chouette.
bonne soirée à tous.
Avatar du membre
mikell
Modérateur
Modérateur
Messages : 6217
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: modifier le format de la version de compilation

#3

Message par mikell »

Tu peux faire ces paramétrages toi-même avec des fonctions intégrées

$v = 2.97
For $i = 1 to 4
   $v += 0.01
   Msgbox(0,"", StringFormat("%.02f", Round($v, 2)) )
Next
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
fredmame
Niveau 3
Niveau 3
Messages : 34
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Re: modifier le format de la version de compilation

#4

Message par fredmame »

Salut,
Merci de ton intervention.

J'ai finalement persévéré dans la voie d'une auto incrémentation personnalisée, toujours dans le fichier AutoIt3Wrapper.au3

par exemple, si je ne veux pas des 4 chiffres ( version A.B.C.D) comme il est imposé, ni que chaque chiffre aille jusqu'à des énormités,

j'ai commenté les lignes (en mettant ";" ) 1878 et 1882 (dans ma version 21.316.1639.1 de AutoIt3Wrapper.au3)
pour qu'elles ne s'executent pas

Code : Tout sélectionner

DllStructSetData($p_VS_FIXEDFILEINFO, "dwFileVersionLS", Number("0x" & Hex($tFileversion[3], 4) & Hex($tFileversion[4], 4)))
DllStructSetData($p_VS_FIXEDFILEINFO, "dwProductVersionLS", Number("0x" & Hex($tFileversion[3], 4) & Hex($tFileversion[4], 4)))


modifié la ligne 3943 et 3946 et 3949 en commentant la partie qui affiche le C.D (dans mon exemple de version A.B.C.D)
donc

Code : Tout sélectionner

& "." & $T_Numbers[3] & "." & $T_Numbers[4
et en ajoutant le chiffre "+"
(dans la partie Func Valid_FileVersion($i_FileVersion, $IsFileVersion = 1)
Voilà ce que ca donne :

Code : Tout sélectionner

$INP_Fileversion_New = $T_Numbers[1] & "." & $T_Numbers[2] ;& "." & $T_Numbers[3] & "." & $T_Numbers[4]
$INP_Fileversion_New = $T_Numbers[1] & "." & $T_Numbers[2]  + 1 ;& "." & $T_Numbers[3] & "." & $T_Numbers[4]
 Return $T_Numbers[1] & "." & $T_Numbers[2] ;& "." & $T_Numbers[3] & "." & $T_Numbers[4]
et ajouté un petit bout de code avant le return et le endfunc

Code : Tout sélectionner

			if $T_Numbers[2] = 19 Then
			$T_Numbers[1] += 1
			$T_Numbers[2] = -1
			EndIf
			
avant la fin de cette fonction Func Valid_FileVersion($i_FileVersion, $IsFileVersion = 1)

Ainsi, par exemple en mettant le chiffre 19 dans le petit bout de code, l'auto incrémentation passera de
0.1->0.19->1.0->1.19->2.0->2.19->3.0 etc.
et plus version 1.9999.888888.6565665 :lol:

Et ma fonction pour afficher la version correctement :

Code : Tout sélectionner

Func _GetVersion() ;pour afficher le numero de la version compilée
    If @Compiled Then
	$versionmod= stringsplit(FileGetVersion(@AutoItExe),".")
	$versionmodnew = $versionmod[1]&"."&$versionmod[2]
	return $versionmodnew

		Else
			Return IniRead(@ScriptFullPath, "FileVersion", "#AutoIt3Wrapper_Res_Fileversion", "pas compilé donc  v inconnue")
			; tant que le script n'est pas compilé (on l'execute depuis le fichier .au3) on ne peut pas recuperer la valeur

	EndIf
EndFunc
Affaire résolue... à l'arrache :D
Répondre