Search code examples
nsis

How do I conditionally compile an NSIS script based on commandline parameters?


I'm trying to generalize a setup file by externally passing the version number. I want to be able to do this:

makensis myscript.nsi parameter=value

and then read the parameter within the script, so that using the same script I can generate differently versioned executables. I found this & this, but they seem to be for passing commandline parameters to the generated setup.exe. Is this possible, and how?


Solution

  • You can add symbols to the globally defined list from the command line using the /D switch:

    makensis /DMyVersion="1.0.1" install.nsi
    

    Then you can use them using the ${} syntax:

    !ifdef MyVersion
        StrCpy $Version "${MyInstallerName}"
    !else
        StrCpy $Version "1.0.0"
    !endif
    

    Also of possible interest is the GetVersion plugin discussed in this SO question: NSIS - put EXE version into name of installer