code

애플리케이션 버전에 따라 Inno Setup 설치 프로그램의 버전을 자동으로 설정하려면 어떻게해야합니까?

codestyles 2020. 12. 24. 23:45
반응형

애플리케이션 버전에 따라 Inno Setup 설치 프로그램의 버전을 자동으로 설정하려면 어떻게해야합니까?


Inno Setup을 사용하여 내 응용 프로그램의 설치 프로그램을 생성하고 있습니다. VersionInfoVersionInno에서 생성 한 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

반응형