10
votes

Le nom de fichier de configuration peut-il être dérivé du numéro de version de fichier exécutable?

est-il possible d'obtenir Inno Setup pour lire la version de fichier du fichier exécutable principal et définir le nom de la configuration créée sur quelque chose comme "myApp_Setup_1_0_3708_19805.exe"?


0 commentaires

4 Réponses :


21
votes

Vous devriez être capable de le faire comme ceci:

(Je n'ai pas essayé ceci récemment, mais cela a certainement repris en 2007 lorsque j'utilisais d'inno de cette manière. Cela pourrait avoir besoin de légers changements si la syntaxe de Inno a changé depuis lors.) xxx

si mymainfile.exe était la version 1.2.3.4, cela devrait appeler le programme d'installation fini Setup_myTool_1_2_3_4.exe

L'AVF1, AVF2 , etc. Les choses sont juste là pour remplacer les points (.) dans le numéro de version avec des traits de soulignement (_) pour éviter de causer des problèmes de choses qui ne peuvent pas faire face à de nombreuses points dans un nom de fichier.


2 commentaires

beau! Travaillé bien, il suffit d'avoir besoin du nom de Mainbinaire dans des citations :) (J'ai édité votre réponse)


+1, je ne savais pas que le préprocesseur pourrait être utilisé pour cela. Va enlever ma réponse.



4
votes
; Get the App Version from Main Program
; This Is Full App Version Major.Minor.Build.Revision
; Store First 3 Parts of Version in ShortAppVersion to be used for SBS Assembly Installation Major.Minor.Build
#dim Version[4]
#expr ParseVersion("MainProgram.exe", Version[0], Version[1], Version[2], Version[3])
#define AppVersion Str(Version[0]) + "." + Str(Version[1]) + "." + Str(Version[2]) + "." + Str(Version[3])
#define ShortAppVersion Str(Version[0]) + "." + Str(Version[1]) + "." + Str(Version[2])

0 commentaires

1
votes

Un moyen beaucoup plus propre de faire cela implique l'utilisation de la fonction stringchange , ce qui permet de remplacer les points avec quelque chose d'autre: xxx

aussi, si vous ne le faites pas Voulez-vous afficher les quatre numéros de version (par exemple, vous souhaitez qu'il dise 1.0.1 au lieu de 1.0.1.0 ), vous pouvez remplacer l'apparversion ligne avec les éléments suivants: xxx


3 commentaires

Le code de NumberOversionPoints ne fonctionne que si le numéro de version ne contient aucun élément à deux chiffres (par exemple, "1.2.10.0" convertit à tort à "1.2.1").


@Typeia avez-vous une idée de la façon de gérer ce cas?


Je n'ai pas à l'époque, mais j'ai trouvé une solution sur la liste de diffusion Inno. Je viens de poster une nouvelle réponse ci-dessous. Merci de me faire commencer!



1
votes

getfileversion () code> (décrit dans d'autres réponses) renvoie une chaîne de formulaire "major.minor.rev.build". Si vous souhaitez accéder aux éléments individuels afin que vous puissiez formater la chaîne vous-même (par exemple, si vous voulez seulement «major.minor.rev» ou «major.minor.rev»), vous pouvez utiliser l'approche suivante de la Jrsoftware.innosetup Liste de diffusion :

#define VerMajor
#define VerMinor
#define VerRev
#define VerBuild
#define FullVersion=ParseVersion('PathTo.exe', VerMajor, VerMinor, VerRev, VerBuild)
#define MyAppVersion = Str(VerMajor) + "." + Str(VerMinor)


0 commentaires