tutorial setup inno for descargar inno-setup

inno-setup - for - inno setup tutorial



¿Cómo configuro automáticamente la versión de mi instalador Inno Setup de acuerdo con la versión de mi aplicación? (4)

Estoy usando Inno Setup para generar el instalador de mi aplicación. ¿Cómo puedo configurar el número de versión de setup.exe ( VersionInfoVersion ) generado por Inno para que coincida con el número de versión de mi aplicación automáticamente? Ahora, cada vez que despliegue una nueva versión de mi aplicación, necesito actualizar el número de versión manualmente.

Ahora estoy haciendo esto:

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

Quiero algo como esto:

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


En caso de que tenga un webinstaller puro, la solución aceptada no funcionará, ya que simplemente no tendrá una aplicación.exe para obtener el número de versión.

Estoy usando Nant y un archivo build.xml con propiedades de número de versión, que manualmente toco, antes de reconstruir los instaladores innosetup.

Mis archivos * .iss contienen un token especial @ APPVERSION @, que se reemplaza con el número de versión durante el proceso de compilación. Esto se realiza a través de una operación de copia con una cadena de filtros aplicada, ver a continuación.

InnoSetup Script (* .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>


Otra forma de hacerlo utilizando un argumento de línea de comando :

[Setup] AppVersion={#MyAppVersion}

y solo llamas a tu script como sigue desde un cmd:

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

#define MyAppVersion="10.0.0.1" en el script iss.

Si está utilizando CakeBuild , puede pasar este argumento como

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


Puede usar la función GetFileVersion preprocesador Inno Setup como este

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


Tuve algunos problemas para hacer que esto funcione, por lo que solo contribuyo con mi solución.

app.iss:

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

Config.txt:

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