Tutorial: Using labels in macro's
From NSIS Wiki
Jump to navigationJump to search
Author: Afrow UK (talk, contrib) |
Description
Labels work fine in macros until you start to insert the macros more than once in the same Section or Function!
Solution
The work-around for this problem is quite simple…
## Our macro !macro DoSomething Param !define UniqueID ${__LINE__} StrCmp ${Param} "something" 0 NoSomething_${UniqueID} ... NoSomething_${UniqueID}: !undef UniqueID !macroend
What we do is create a unique identity (${UniqueID}
) for each instance of !insertmacro
and place this unique identity in each label reference. This ensures that all label groups are unique no matter how many times we use !insertmacro
.
We use ${__LINE__}
(current line number) for the UniqueID as it will always change between each !define
. We have to !undef
-ine UniqueID at the end of the macro too, so the next !insertmacro
can re-define a new line number to UniqueID.
-Stu