Util.nsh 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. ; ---------------------
  2. ; Util.nsh
  3. ; ---------------------
  4. ;
  5. ; Voodoo macros to make end-user usage easier. This may be documented someday.
  6. !verbose push
  7. !verbose 3
  8. !ifndef ___UTIL__NSH___
  9. !define ___UTIL__NSH___
  10. # see WinVer.nsh and *Func.nsh for usage examples
  11. !macro CallArtificialFunction NAME
  12. !ifndef __UNINSTALL__
  13. !define CallArtificialFunction_TYPE inst
  14. !else
  15. !define CallArtificialFunction_TYPE uninst
  16. !endif
  17. Call :.${NAME}${CallArtificialFunction_TYPE}
  18. !ifndef ${NAME}${CallArtificialFunction_TYPE}_DEFINED
  19. Goto ${NAME}${CallArtificialFunction_TYPE}_DONE
  20. !define ${NAME}${CallArtificialFunction_TYPE}_DEFINED
  21. .${NAME}${CallArtificialFunction_TYPE}:
  22. !insertmacro ${NAME}
  23. Return
  24. ${NAME}${CallArtificialFunction_TYPE}_DONE:
  25. !endif
  26. !undef CallArtificialFunction_TYPE
  27. !macroend
  28. !define CallArtificialFunction `!insertmacro CallArtificialFunction`
  29. # for usage of artificial functions inside artificial functions
  30. # macro recursion is prohibited
  31. !macro CallArtificialFunction2 NAME
  32. !ifndef __UNINSTALL__
  33. !define CallArtificialFunction2_TYPE inst
  34. !else
  35. !define CallArtificialFunction2_TYPE uninst
  36. !endif
  37. Call :.${NAME}${CallArtificialFunction2_TYPE}
  38. !ifndef ${NAME}${CallArtificialFunction2_TYPE}_DEFINED
  39. Goto ${NAME}${CallArtificialFunction2_TYPE}_DONE
  40. !define ${NAME}${CallArtificialFunction2_TYPE}_DEFINED
  41. .${NAME}${CallArtificialFunction2_TYPE}:
  42. !insertmacro ${NAME}
  43. Return
  44. ${NAME}${CallArtificialFunction2_TYPE}_DONE:
  45. !endif
  46. !undef CallArtificialFunction2_TYPE
  47. !macroend
  48. !define CallArtificialFunction2 `!insertmacro CallArtificialFunction2`
  49. !endif # !___UTIL__NSH___
  50. !verbose pop