No! You really need to read the manual. !define creates a constant not a variable. Var creates a user variable. User variables and NSIS registers ($R0-$R9, $0-$9) use the same syntax ($var). Constants use ${constant}. Constants are evaluated at compile time, i.e. their place-holder (${constant}) is substituted with their value at compile time. The actual constant no longer exists in the built installer executable. This goes for every command that begins with a !, hence why they are in the manual under compile time commands. Not sure why I am answering this - you really should look this stuff up.
Edit: And don't confuse run-time constants (e.g. $SYSDIR) with compile-time constants (${myconstant}). They are not the same. $SYSDIR (etc.) is like a special variable which has its value set before .onInit, but you cannot write to it.
Stu
Thanks for your explainations! I will also check the manual.