I'm not sure how to correctly title this post, but i came across an issue where i added some code to my installer, it compiled successfully, and then would hang and consume memory indefintely when it was run.
Here is the scenario:
I needed to add a check for the .NET Framework to an existing installer i built from a blank template. (This installer was very simple...it merely swapped one file for another). I copied the .NET code from another installer that i have. It compiled successfully. However, whenever it got to the part of checking/installing the .NET framework, the installer would hang indefinitely with no errors displayed. It would then go on to consume more and more memory until i would have to kill it from Task manager.
After much troubleshooting i found the cause of the problem. Here is the line:
Set Variable PRELIST to $PRELIST$$NEWLINE$Microsoft .NET Framework 2.0 must be installed.
This was the first time that PRELIST was defined in the installer and it appears that the installer choked on trying to insert the undefined $PRELIST$ string into itself. I fixed the problem by setting the variable to nothing earlier in the script:
Set Variable PRELIST to
My question is, why does the compiler allow it to compile in the first place?

