Как автоматически установить версию моего установщика 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}
4 ответов:
в случае, если у вас есть чистый 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