Как автоматически установить версию моего установщика Inno Setup в соответствии с моей версией приложения?



Я использую Inno Setup для создания установщика моего приложения. Как можно установить номер версии установки.exe (VersionInfoVersion) генерируется Inno в соответствии с номером версии моего приложения автоматически? Теперь каждый раз, когда я развертываю новую версию своего приложения, мне нужно вручную обновить номер версии.



Теперь я делаю это:



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


Я хочу что-то вроде этого:



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

4 ответов:

Вы можете использовать препроцессор Inno Setup

в случае, если у вас есть чистый webinstaller, принятое решение не будет работать, потому что у вас просто не будет приложения.exe, чтобы получить номер версии из.

Я использую Nant и build.xml файл со свойствами номера версии, который я вручную ударяю, прежде чем я перестраиваю установщики innosetup.

мой *.файлы iss содержат специальный токен @APPVERSION@, который заменяется с номером версии во время процесса сборки. Это делается с помощью копии работа с примененной цепочкой фильтров, см. ниже.

Сценарий 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>

другой способ сделать это с помощью аргумент командной строки:

[Setup]           
AppVersion={#MyAppVersion}

и вы просто вызываете свой скрипт, как следует из 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" в сценарии МКС.


если вы используете 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);

у меня были некоторые проблемы с получением этой работы, так что просто внести свой вклад в мое решение.

приложение.МКС:

[Setup]
#include "Config.txt"

#define AppVersion GetFileVersion("Input\" + AppExec)


AppName={#AppName}
AppVersion={#AppVersion}

Config.txt:

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

Comments

    Ничего не найдено.