Evaluator variables in conditional label assignment

This evaluator expression works as expected, correctly setting the button label to BC5 if the executable exists.

@label:=return (Exists("/programfiles/Beyond Compare 5/BCompare.exe")) ? "BC5" : "BC4";

An attempt to do the same thing using evaluator variables returns an error.

bc4 = Exists("/programfiles/Beyond Compare 4/BCompare.exe");
bc5 = Exists("/programfiles/Beyond Compare 5/BCompare.exe");
@label:=return (bc5) ? "BC5" : "BC4";

The error message is:

@label:=return (bc5) ? "BC5" : "BC4";
Conditional compilation is turned off (0x800a0406)

Is my syntax wrong?

@evalalways:=bc4 = Exists("/programfiles/Beyond Compare 4/BCompare.exe");
@evalalways:=bc5 = Exists("/programfiles/Beyond Compare 5/BCompare.exe");
@label:=return (bc5) ? "BC5" : (bc4) ? "BC4" : "No BC";

Details of @evalalways:

That error message sounds like it may have come from the JScript engine, do you have the button set to script mode?

Yes I do. It's a JScript button command.