FoBoT
26th June 2007 01:51 UTC
anyway to escape ${NSISDIR} to write to a file
i want to write the !addincludedir command into a text file from a .nsi
is there a way to either use $\ or quotes so that at compile time the !addincludedir command isn't processes by the compiler?
FileWrite $0 '"$\!"addincludedir $${NSISDIR}\2008\Source\$${APP_NAME}$\r$\n$\r$\n'
thank you
:igor:
*EDIT*
i misunderstood the compiler error, it appears it doesn't like the $${NSISDIR} or at least teh $$ part
is there a way to escape ${NSISDIR} properly? i thought you just added another $
Joel
26th June 2007 02:19 UTC
Wait!!!
FileWrite $0 '"$\!"addincludedir $${NSISDIR}\2008\Source\$${APP_NAME}$\r$\n$\r$\n'
addincludedir is only a compiler directive....try a define instead:
!define TMP_PLUG "C:\\put\\a\\path\\fully\\qualify"
>; later I can use
!AddIncludeDir "${TMP_PLUG}"
>; Even in
FileWrite$0 ${TMP_PLUG}
FoBoT
26th June 2007 02:42 UTC
i am trying to write a template (.nsi) using FileWrite, the parts i want to write out to the template are "!addincludedir" and "$${NSIS}" so that those are in the template when i later compile the .nsi program the template was used to start
i'll try a define like
!define THATTHING "!"
!define ANOTHERTHING "AddIncludeDir"
!define YETANOTHERTHING "$$"
!define THELASTTHING "{NSIS}
FileWrite $0 ${THATTHING}${ANOTHERTHING}
FileWrite $0 ${YETANOTHERTHING}${THELASTTHING}
but at some point it might be easier to write .vbs to write the template and just fire the .vbs from my .exe
thank you
Afrow UK
26th June 2007 14:33 UTC
Why do you have to escape the !?
Stu
FoBoT
27th June 2007 00:30 UTC
i don't want !addincludedir to be executed by the compiler, i want to write it to a text file
same with ${NSISDIR}
but i worked around the issue with another way
i was trying to see if there was a way to write anything/everything to a text file, things the compiler would normally view as commands, but since it was contained in a filewrite command, it would ignore it
Afrow UK
27th June 2007 11:52 UTC
The compiler will only execute it if it's at the start of the line!! Did you try it?
Stu
FoBoT
27th June 2007 21:24 UTC
just to clarify, i was misreading the compiler error at first, this works, you get !addincludedir in your .nsi file
Name "test"
>OutFile "test.exe"
>Section "Test"
>FileOpen $0 template.nsi w
FileWrite$0 "!addincludedir"
>FileClose $0
SectionEnd
>
but if you do this, you get the error "1 warning:
unknown variable/constant "C:\Program" detected, ignoring (E:\tmp\test.nsi:5)" and you get $C:\Program Files\NSIS in your file
Name "test"
>OutFile "test.exe"
>Section "Test"
>FileOpen $0 template.nsi w
FileWrite$0 "$${NSISDIR}"
>FileClose $0
SectionEnd
>
the extra $ in front of ${NSISDIR} doesn't escape ${NSISDIR} the way it does other variables and stuff the way it says in the manual 4.2.4
Afrow UK
27th June 2007 21:52 UTC
You're right there. $${BLAH} works but $${NSISDIR} does not :S
You should open a bug report.
Stu
kichik
27th June 2007 22:06 UTC
Use:
!define DOLLAR $
${DOLLAR}{NSISDIR}
FoBoT
27th June 2007 23:29 UTC
sweet, now i have a workaround if i ever need that again
:D
Name "test"
>OutFile "test.exe"
>!define DOLLAR $
>Section "Test"
>FileOpen $0 template.nsi w
FileWrite$0 "${DOLLAR}${DOLLAR}{NSISDIR}"
>FileClose $0
SectionEnd
>
Joel
28th June 2007 01:37 UTC
Imposible!!!
Kichik used a few words and the problem is solve :D