如何根据我的应用程序版本自动设置我的Inno Setup安装程序的版本?

我正在使用Inno安装程序来生成我的应用程序的安装程序。 如何设置Inno生成的setup.exe( VersionInfoVersion )版本号与我的应用程序的版本号自动匹配? 现在每次部署我的应用程序的新版本时,我都需要手动更新版本号。

现在我正在这样做:

 [Setup] VersionInfoVersion=1.2.2.0 //writting the value manually 

我想要这样的东西:

 [Setup] VersionInfoVersion={Get the version of my app} 

您可以像这样使用Inno Setup Preprocessor GetFileVersion函数

 #define ApplicationName 'Application Name' #define ApplicationVersion GetFileVersion('Application.exe') [Setup] AppName={#ApplicationName} AppVerName={#ApplicationName} {#ApplicationVersion} VersionInfoVersion={#ApplicationVersion} 

万一你有一个纯粹的web安装程序,接受的解决scheme将无法正常工作,因为你只是不会有一个application.exe来获取版本号。

我正在使用Nant和一个版本号属性的build.xml文件,我手动碰撞之前,我重buildinnosetup安装程序。

我的* .iss文件包含一个特殊的标记@ APPVERSION @,在构build过程中被replace为版本号。 这是通过使用过滤链的复制操作来完成的,见下文。

InnoSetup脚本(* .iss)

 // the -APPVERSION- token is replaced during the nant build process #define AppVersion "@APPVERSION@" 

nant build.xml:

 <!-- Version --> <property name="product.Name" value="My Software"/> <property name="version.Major" value="1"/> <property name="version.Minor" value="2"/> <property name="version.BuildNumber" value="3"/> <property name="product.Version" value="${version.Major}.${version.Minor}.${version.BuildNumber}"/> <!-- build task --> <target name="bump-version" description="Inserts the current version number into the InnoScript."> <copy todir="${dir.Build}" overwrite="true"> <fileset basedir="${dir.Base}/innosetup/"> <include name="product-webinstaller-w32.iss"/> <include name="product-webinstaller-w64.iss"/> </fileset> <filterchain> <replacetokens> <token key="APPVERSION" value="${product.Version}"/> </replacetokens> </filterchain> </copy> </target> 

我在解决这个问题上遇到了一些问题,所以只是提供我的解决scheme。

app.iss:

 [Setup] #include "Config.txt" #define AppVersion GetFileVersion("Input\" + AppExec) AppName={#AppName} AppVersion={#AppVersion} 

CONFIG.TXT:

 #define AppName "App" #define AppExec "App.exe" 

通过使用命令行参数的另一种方法:

 [Setup] AppVersion={#MyAppVersion} 

你只需从cmd中调用你的脚本:

 cd C:\Program Files (x86)\Inno Setup 5 iscc /dMyAppVersion="10.0.0.1" "C:\MyPath\MyScript.iss" 

它在iss脚本中模拟#define MyAppVersion="10.0.0.1"


如果你正在使用CakeBuild ,你可以传递这个参数

  string CurrentVersion = "10.0.0.1"; InnoSetupSettings settings = new InnoSetupSettings(); settings.Defines= new Dictionary<string, string> { { "MyAppVersion", CurrentVersion }, }; InnoSetup("C:\MyPath\MyScript.iss", settings);