[C] Récupérer le numéro de version d'un fichier "a3x"

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
mimione
Niveau 4
Niveau 4
Messages : 91
Enregistré le : mer. 30 avr. 2008 18:11
Localisation : Bretagne
Status : Hors ligne

[C] Récupérer le numéro de version d'un fichier "a3x"

#1

Message par mimione »

Bonjour

Pour retrouver la version d'un programme AutoIt compilé, j'utilise l'instruction "FileGetVersion(@ScriptName)".

Un peu lassé de me battre contre les divers antivirus (notamment lorsque les programmes doivent être distribués sur plusieurs machines chez plusieurs utilisateurs), j'envisage de compiler en "a3x", quitte à distribuer simultanément une copie de "AutoIt3.exe".

PROBLÈME: l'instruction "FileGetVersion(@ScriptName)" ne fonctionne plus (le "@ScriptName" est le nom du fichier a3x, qui ne porte pas de N° de version).
La version lors de la compilation en "a3x" est bien inscrite dans le fichier source "au3", possiblement dans le "a3x", mais je ne vois pas comment la récupérer.

Une idée ?

Bonne journée,
M.C.
Modifié en dernier par mimione le mer. 14 avr. 2021 07:12, modifié 1 fois.
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#2

Message par Tlem »

Bonjour.
Étant donné qu'un fichier .a3x n'est qu'un fichiers texte, vous ne pourrez utiliser la ressource version.
Il me semble par contre qu'il est possible d'en utiliser d'autres.

Après il faut bidouiller :
- Un autre fichier qui contient la version (.ini, .ver, etc...).
- Une option en ligne de commande qui retourne la version (Autoit3.exe monprog.a3x /v).
- Une clé de base de registre (Si le programme a été lancé).
- Ou tout autre solutions adaptée à votre situation. ;)

Ps : Je fais la réponse de mon smartphone, donc je n'ai pas tout vérifié ^^).
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#3

Message par mikell »

Qu'est-ce que ça donne avec le script cy-dessous (compilé en a3x) ?

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Outfile_type=a3x
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#pragma compile(Out, myProg.a3x)
#pragma compile(FileDescription, myProg - a description of the application)
#pragma compile(ProductName, myProg)
#pragma compile(ProductVersion, 3.7)
#pragma compile(FileVersion, 3.7.0.0, 3.7.100.201) ; The last parameter is optional.
#pragma compile(LegalCopyright, © Joe Bloggs)
#pragma compile(LegalTrademarks, '"Trademark something, and some text in "quotes" etc...')
#pragma compile(CompanyName, 'Joe Bloggs & Co')

#include <MsgBoxConstants.au3>

If @Compiled Then
    Example()
Else
    MsgBox($MB_SYSTEMMODAL, "", "Please compile before running.")
EndIf

Func Example()
    Local $sFileVersion = FileGetVersion(@scriptdir & "\myProg.a3x")
  ;  Local $sFileVersion = FileGetVersion(@scriptname)  ; <== marche aussi
    MsgBox($MB_SYSTEMMODAL, "", $sFileVersion)
EndFunc   ;==>Example

Chez moi ça marche, même en récupérant la version depuis un script externe

MsgBox(0, "", FileGetVersion(@scriptdir & "\myProg.a3x") )

Tlem a écrit : sam. 10 avr. 2021 11:13 ... un fichier .a3x n'est qu'un fichier texte ...
Thierry !! Image Image
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#4

Message par Tlem »

Oui, je me souviens maintenant.
Windows n'affiche pas directement les infos de version pour ce type de fichier, mais elles sont là malgré tout. ^^
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#5

Message par mikell »

Sur mon vieil OS, en compilant le code cy-dessus, si je clique droit sur le a3x > Propriétés > Version , j'ai bien toutes les infos affichées
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#6

Message par Tlem »

Étonnant. ^^
a3x Win10.JPG
a3x Win7.JPG
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#7

Message par mikell »

J'ai bien dit : sur mon vieil OS :mrgreen:

Image1.jpg
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#8

Message par Tlem »

:shock: XP !!!

Ha mais là, c'est d'un autre temps ... :|
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#9

Message par mikell »

Certes mais ça marche, et très bien en plus :mrgreen:

Mais c'est un détail, le plus important c'est que mimione arrive à récupérer ses infos ^^
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
jchd
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 2272
Enregistré le : lun. 30 mars 2009 22:57
Localisation : Sud-Ouest de la France (43.622788,-1.260864)
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#10

Message par jchd »

On peut aussi faire ça "à la pépère" : encoder la version x.y.z dans l'heure de création du fichier .a3x en laissant la date du jour.
En couvrant de 0.0.0 à 23.59.59, ça laisse le temps de pas mal de versions et comme à priori les versions croissantes sortent à des dates croissantes, le tri par date de fichier reste correct.
La cryptographie d'aujourd'hui c'est le taquin plus l'électricité.
Avatar du membre
mimione
Niveau 4
Niveau 4
Messages : 91
Enregistré le : mer. 30 avr. 2008 18:11
Localisation : Bretagne
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#11

Message par mimione »

Hello !
Le code proposé par mikel fonctionne effectivement, mais je vais faire la fine bouche !
Le "FileGetVersion" récupère le numéro de version indiqué par la directive "#pragma compile(FileVersion, 3.7.0.0, 3.7.100.201)"

Le hic, c'est que l'option "Auto Increment" de la fenêtre de compilation incrémente la version spécifiée par "#AutoIt3Wrapper_Res_Fileversion".
C'est bien cette dernière directive qui sert pour un "FileGetVersion" sur un exécutable "exe", le N° de version est alors correctement incrémenté et lu.

Et cette option "Auto Increment" est quand même bigrement pratique (voire indispensable à mon avis)...
Bigre, bigre.
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#12

Message par mikell »

Ayant répondu (correctement je crois) à la question-titre, je laisse le soin des détails à la charge de l'utilisateur :mrgreen:

D'autant plus que l'absence de fourniture d'un code d'exemple pour montrer "ce qui ne va pas" n'incite pas vraiment à des efforts démesurés
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
Avatar du membre
mimione
Niveau 4
Niveau 4
Messages : 91
Enregistré le : mer. 30 avr. 2008 18:11
Localisation : Bretagne
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#13

Message par mimione »

Ce qui ne va pas me semble parfaitement décrit dans mon post précédent, et se produit avec votre code du 10 avr. 2021, 11:33
Une nouvelle compilation en "a3x" avec l'option "AutoIncrement" n'incrémentera pas le numéro de version récupéré.

Restons en là.
Merci pour vos propositions.
M.C.
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
Avatar du membre
Nine
AutoIt MVPs (MVP)
AutoIt MVPs (MVP)
Messages : 103
Enregistré le : ven. 17 avr. 2020 01:23
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#14

Message par Nine »

Je ne sais si ta bouche est fine pour cette proposition :wink:

Mais avec ces directives, ça fonctionne presque :

Code : Tout sélectionner

#AutoIt3Wrapper_Outfile_type=a3x
#AutoIt3Wrapper_Res_Fileversion=4.4.4.6
#AutoIt3Wrapper_Res_Fileversion_AutoIncrement=y
#pragma compile(Out, Temp6.a3x)
;#pragma compile(Fileversion, 4.4.4.7)
Tant que la dernière ligne est commentée, l'autoincrement va faire son travail. Lorsque l'on veut une compilation finale, on enlève le commentaire et voilà tout se remet en place correctement.
Avatar du membre
mimione
Niveau 4
Niveau 4
Messages : 91
Enregistré le : mer. 30 avr. 2008 18:11
Localisation : Bretagne
Status : Hors ligne

Re: Récupérer le numéro de version d'un fichier "a3x"

#15

Message par mimione »

Mmmmmouai....
Il y a quand même des conflits difficiles à appréhender entre les directives "#AutoIt3Wrapper" et "#pragma compile".
Ajoutons le comportement différent du "FileGetVersion" en exe et en a3x, et l'utilisation reste piègeuse.
L' AutoIncrement est un confort, mais s'il faut composer avec les comportements curieux des directives, ce n'est pas la peine.

Je pense que je vais creuser du côté de la toute première proposition de Thierry, en lançant avec le "Run Before/After" de la fenêtre "AutoIt3Wrapper" un script qui ira renseigner un fichier INI.

Merci pour vos tentatives.

M.C.
Je ne suis pas toujours de mon avis....
--------------------------------------------
Des malheurs évités le bonheur se compose.
Répondre