Is it possible to automate the creation of a inno setup package with ant?

后端 未结 2 1151
滥情空心
滥情空心 2021-02-03 15:57

I am creating an Eclipse RCP application.

I am following Joel\'s advice in the following article \"Daily Builds are your friend\":

http://www.joelonsoftware.com/

相关标签:
2条回答
  • 2021-02-03 16:43

    sure its easy, Inno project is a plain text file so you can even edit setupper script easily by ant, however I would recommend creating a separate small include file by your script. You can have store there "variables" such as version+build number that you show in begin of setup.

    put this line to your setupper:

    #include "settings.txt"
    

    and make settings.txt have something like this

    #define myver=xxx.xxx
    #define tags
    

    now you don't need to touch the actual setupper code from build script.

    below is a snippet from my build script to compile the setupper. you need to execute batch file from ant like this:

    <exec dir="." executable="cmd" os="Windows NT">
      <arg line="/c build.bat"/>
    </exec>
    

    sample batch build.bat:

    set isxpath="c:\program files\inno setup 5"
    set isx=%isxpath%\iscc.exe
    set iwz=myproj.iss
    if not exist %isx% set errormsg=%isx% not found && goto errorhandler
    %isx% "%iwz%" /O"%buildpath%" /F"MySetupper.exe" >>%logfile%
    goto :eof
    
    0 讨论(0)
  • 2021-02-03 16:59

    Another nice trick when automating installer building is to use the GetFileVersion preprocessor (ISPP) macro. That way you won't have to duplicate your (binary) files' version numbers in hardcoded form (like in Tom's settings.txt) - the installer compiler will simply read it from the files' version resources that way. E.g.:

    #define AppName "My App"
    #define SrcApp "MyApp.exe"
    #define FileVerStr GetFileVersion(SrcApp)
    #define StripBuild(str VerStr) Copy(VerStr, 1, RPos(".", VerStr)-1)
    #define AppVerStr StripBuild(FileVerStr)
    
    [Setup]
    AppName={#AppName}
    AppVersion={#AppVerStr}
    AppVerName={#AppName} {#AppVerStr}
    UninstallDisplayName={#AppName} {#AppVerStr}
    VersionInfoVersion={#FileVerStr}
    VersionInfoTextVersion={#AppVerStr}
    OutputBaseFilename=MyApp-{#FileVerStr}-setup
    

    Furthermore, you can forward symbols to the compiler via the /d commandline switch, e.g.:

    iscc.exe /dSpecialEdition ...
    

    and then later use these in ifdefs to create different types of installer (stupid example follows):

    [Registry]
    #ifdef SpecialEdition
    Root: HKLM; Subkey: Software\MyCompany\MyApp; ValueName: SpecialEdition; ValueType: dword; ValueData: 1 ...
    #endif
    
    0 讨论(0)
提交回复
热议问题