I have an existing Ant script that calls MakeNSIS and successfully creates an installer file. I want the output path to be changed within Ant, and then passed along to NSIS. Currently, I have tried calling NSIS in this way:
<exec executable="${nsis_exe.dir}/makensis.exe">
<arg value="${installer.dir}/installer.nsi" />
<arg value="/DTEST=myvalue"/>
<arg value="/DBUILD_VERSION_LABEL=${build.version.label}"/>
</exec>
But I have not been able to retrieve this value in the nsi file. I cannot use this solution because I want to use the parameter in the File command, which requires a symbol, not a variable, to work correctly.
I'm using the following in my nsi file:
DetailPrint ${TEST}
DetailPrint ${DTEST}
DetailPrint ${BUILD_VERSION_LABEL}
File /r "C:\DTU\Build\${BUILD_VERSION_LABEL}\*"
And the errors I receive are:
[exec] warning: unknown variable/constant "{TEST}" detected, ignoring (../Solution/third_party/NSIS_Build/dtu_installer.nsi:184)
[exec] DetailPrint: "${TEST}"
[exec] warning: unknown variable/constant "{DTEST}" detected, ignoring (../Solution/third_party/NSIS_Build/dtu_installer.nsi:185)
[exec] DetailPrint: "${DTEST}"
[exec] warning: unknown variable/constant "{BUILD_VERSION_LABEL}" detected, ignoring (../Solution/third_party/NSIS_Build/dtu_installer.nsi:186)
[exec] DetailPrint: "${BUILD_VERSION_LABEL}"
[exec] File: Returning to: "C:\DTU\Build\${BUILD_VERSION_LABEL}"
[exec] File: "C:\DTU\Build\${BUILD_VERSION_LABEL}\*" -> no files found.
Any ideas what I could use or what I'm doing wrong?
The issue I had was the order of my arguments. I had the following in my ANT script:
<exec executable="${nsis_exe.dir}/makensis.exe">
<arg value="${installer.dir}/installer.nsi" />
<arg value="/DTEST=myvalue"/>
<arg value="/DBUILD_VERSION_LABEL=${build.version.label}"/>
</exec>
But apparently I cannot see the /D parameters in the nsi file this way. If I change it so the nsi file is the last parameter, it works:
<exec executable="${nsis_exe.dir}/makensis.exe">
<arg value="/DTEST=myvalue"/>
<arg value="/DBUILD_VERSION_LABEL=${build.version.label}"/>
<arg value="${installer.dir}/installer.nsi" />
</exec>
Then I can access the parameters in the nsi file as I was:
DetailPrint ${TEST}
DetailPrint ${BUILD_VERSION_LABEL}
File /r "C:\DTU\Build\${BUILD_VERSION_LABEL}\*"