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"? P>
4 Réponses :
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.) p> 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 P> 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. P> P>
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.
; 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])
Un moyen beaucoup plus propre de faire cela implique l'utilisation de la fonction aussi, si vous ne le faites pas Voulez-vous afficher les quatre numéros de version (par exemple, vous souhaitez qu'il dise stringchange code>, ce qui permet de remplacer les points avec quelque chose d'autre:
1.0.1 code> au lieu de
1.0.1.0 code>), vous pouvez remplacer l'apparversion
code> ligne avec les éléments suivants: p>
Le code de NumberOversionPoints code> 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!
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)