애플리케이션 버전에 따라 Inno Setup 설치 프로그램의 버전을 자동으로 설정하려면 어떻게해야합니까?
Inno Setup을 사용하여 내 응용 프로그램의 설치 프로그램을 생성하고 있습니다. VersionInfoVersion
Inno에서 생성 한 setup.exe ( )의 버전 번호를 내 애플리케이션의 버전 번호와 자동으로 일치 시키려면 어떻게해야합니까? 이제 새 버전의 애플리케이션을 배포 할 때마다 버전 번호를 수동으로 업데이트해야합니다.
지금 나는 이것을하고있다 :
[Setup]
VersionInfoVersion=1.2.2.0 //writing 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}
명령 줄 인수를 사용 하는 또 다른 방법은 다음과 같습니다.
[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"
iss 스크립트에서 에뮬레이트 됩니다.
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);
순수한 webinstaller가있는 경우에는 버전 번호를 가져올 application.exe가 없기 때문에 허용 된 솔루션이 작동하지 않습니다.
innosetup 설치 프로그램을 다시 빌드하기 전에 Nantbuild.xml
와 버전 번호 속성이 있는 파일을 사용 하고 있습니다.
내 * .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>
이 작업을 수행하는 데 몇 가지 문제가 있었으므로 내 솔루션에 기여했습니다.
app.iss :
[Setup]
#include "Config.txt"
#define AppVersion GetFileVersion("Input\" + AppExec)
AppName={#AppName}
AppVersion={#AppVersion}
Config.txt :
#define AppName "App"
#define AppExec "App.exe"
다른 방법을 시도한 후 꽤 오랜 시간이 지나면 상대 경로를 사용하는 것이 효과적이었습니다 (폴더에 .iss 파일이 있고 두 수준 위의 EXE 파일이 있음).
; Extract File Version from EXE
#define MyAppVersion GetFileVersion("..\..\Release\CSClave.exe")
ReferenceURL : https://stackoverflow.com/questions/6498750/how-do-i-automatically-set-the-version-of-my-inno-setup-installer-according-to-m
'code' 카테고리의 다른 글
False 또는 없음 vs. 없음 또는 False (0) | 2020.12.24 |
---|---|
테스트 리소스 파일을 얻는 방법은 무엇입니까? (0) | 2020.12.24 |
jQuery get position of element relative to another element (0) | 2020.12.24 |
Git 푸시 오류 : "origin이 git 저장소로 보이지 않습니다." (0) | 2020.12.24 |
노드 스트림에서 종료 및 종료 이벤트의 차이점은 무엇입니까? (0) | 2020.12.24 |