mathtest.nsi 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. ;NSIS Modern User Interface version 1.65
  2. ;InstallOptions Example Script
  3. ;Written by Joost Verburg
  4. !define MUI_BUTTONTEXT_NEXT "Execute"
  5. ;---------------------
  6. ;Include Modern UI
  7. !include "MUI.nsh"
  8. ;--------------------------------
  9. ;Product Info
  10. Name "Math::Script Test"
  11. ;--------------------------------
  12. ;Configuration
  13. ;General
  14. OutFile "MathTest.exe"
  15. ;--------------------------------
  16. ;Variables
  17. Var TEMP1
  18. Var TEMP2
  19. Var TEMP3
  20. ;--------------------------------
  21. ;Pages
  22. !insertmacro MUI_PAGE_LICENSE "mathtest.txt"
  23. Page custom ScriptPageEnter
  24. Page instfiles
  25. ;--------------------------------
  26. ;Modern UI Configuration
  27. ; !define MUI_ABORTWARNING
  28. ;--------------------------------
  29. ;Languages
  30. !insertmacro MUI_LANGUAGE "English"
  31. ;--------------------------------
  32. ;Reserve Files
  33. ;Things that need to be extracted on first (keep these lines before any File command!)
  34. ;Only for BZIP2 compression
  35. ReserveFile "MathTest.ini"
  36. !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
  37. ;--------------------------------
  38. ;Installer Functions
  39. LangString SCRIPTSAMPLE0 ${LANG_ENGLISH} "r0 = 'Hello'; r1 = 'Math::Script'\r\nr0 += ' from the ' + r1 + '!'; r1=''"
  40. LangString SCRIPTSAMPLE1 ${LANG_ENGLISH} "a =0; b=1.0\r\n#{a++ < 100, b *= a}\r\nr0 = a; R0 = b; R1 = ff(b, 15)\r\nr1 = (a-1) + '! = ' + b"
  41. LangString SCRIPTSAMPLE2 ${LANG_ENGLISH} 'pi=3.14159; \r\nangle = pi/4;\r\ntext = "x = " + ff(angle,16+3) \r\nr0 = text += ", sin x = " + sin(angle)'
  42. LangString SCRIPTSAMPLE3 ${LANG_ENGLISH} "v1 = 123.456; v2 = 123456789.1011\r\nr0 = v1; r1 = v2\r\nr2 = ff(v1, 3); r3 = ff(v2, 3); r4 = ff(v1, 3+16); r5 = ff(v2, 3+16)\r\nr6 = ff(v1, 3+32); r7 = ff(v2, 3+32); r8 = ff(v1, 3+32+64); r9 = ff(v2, 3+32+64)\r\n"
  43. LangString SCRIPTSAMPLE4 ${LANG_ENGLISH} "a = 10000; b = 0; #{--a > 0, b+= a}; r0 = a; r1 = b\r\nz = 1.55; r2 = #[z > 1.5, 'Its greater', 'Its lower']\r\nz = 1.45; r3 = #[z > 1.5, 'Its greater', 'Its lower']"
  44. LangString SCRIPTSAMPLE5 ${LANG_ENGLISH} 'r0 = "123a123"\r\nr1 = r0; \r\nr2 = s(r0); r3 = f(r0); r4 = i(r0); r5 = l(r0)'
  45. Function .onInit
  46. ;Extract InstallOptions INI files
  47. !insertmacro MUI_INSTALLOPTIONS_EXTRACT "MathTest.ini"
  48. Strcpy "$TEMP1" "$(SCRIPTSAMPLE0)"
  49. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 2" "State" $TEMP1
  50. FunctionEnd
  51. LangString TEXT_IO_TITLE ${LANG_ENGLISH} "MathTest Script Page"
  52. LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Try your scripting capapibilites or test one of sample scripts"
  53. Function DumpVariables
  54. Strcpy "$TEMP1" "$$0='$0'\r\n$$1='$1'\r\n$$2='$2'\r\n$$3='$3'\r\n$$4='$4'\r\n$$5='$5'\r\n$$6='$6'\r\n$$7='$7'\r\n$$8='$8'\r\n$$9='$9'"
  55. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 3" "State" $TEMP1
  56. Strcpy "$TEMP1" "$$R0='$R0'\r\n$$R1='$R1'\r\n$$R2='$R2'\r\n$$R3='$R3'\r\n$$R4='$R4'\r\n$$R5='$R5'\r\n$$R6='$R6'\r\n$$R7='$R7'\r\n$$R8='$R8'\r\n$$R9='$R9'"
  57. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 4" "State" $TEMP1
  58. FunctionEnd
  59. Function ClearVariables
  60. Math::Script "r0=r1=r2=r3=r4=r5=r6=r7=r8=r9=R0=R1=R2=R3=R4=R5=R6=R7=R8=R9=''"
  61. FunctionEnd
  62. Function GetLine
  63. push $TEMP1
  64. Math::Script "mtsDL()"
  65. pop $TEMP2
  66. pop $TEMP1
  67. FunctionEnd
  68. Function ExecuteScript
  69. !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 2" "State"
  70. Math::Script "mtsTQ(s) (s = s(NS); #[s[0]=='$\"',s=s[1,]]; #[s[-1]=='$\"',s=s[,-2]]; NS = s)"
  71. Math::Script "mtsP(s,e, p,i) (p=-1;i=0; #{(i<l(s))&&(p<0), #[s[i,i+l(e)-1]==e, p=i]; i++}; p)"
  72. Math::Script "mtsDL(s) (s=s(NS); p=mtsP(s,'\r\n'); #[p>=0, (NS=s[p+4,]; NS=#[p>0,s[,p-1],'']), (NS='';NS=s)])"
  73. push $TEMP1
  74. ; remove ""
  75. Math::Script "mtsTQ()"
  76. pop $TEMP1
  77. ; script at $TEMP1
  78. Go:
  79. StrLen $TEMP3 $TEMP1
  80. IntCmp $TEMP3 0 End
  81. ; get single line to $TEMP2
  82. Call GetLine
  83. ; MessageBox MB_OK "'$TEMP2' '$TEMP1'"
  84. Math::Script "$TEMP2"
  85. goto Go
  86. End:
  87. Math::Script ""
  88. FunctionEnd
  89. Function ScriptPageEnter
  90. !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" "$(TEXT_IO_SUBTITLE)"
  91. Again:
  92. Call ClearVariables
  93. Call ExecuteScript
  94. Call DumpVariables
  95. !insertmacro MUI_INSTALLOPTIONS_DISPLAY_RETURN "mathtest.ini"
  96. pop $TEMP3
  97. !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 5" "State"
  98. IntCmp $TEMP1 1 Test
  99. Strcpy "$TEMP2" "$(SCRIPTSAMPLE1)"
  100. !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 6" "State"
  101. IntCmp $TEMP1 1 Write
  102. Strcpy "$TEMP2" "$(SCRIPTSAMPLE2)"
  103. !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 7" "State"
  104. IntCmp $TEMP1 1 Write
  105. Strcpy "$TEMP2" "$(SCRIPTSAMPLE3)"
  106. !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 8" "State"
  107. IntCmp $TEMP1 1 Write
  108. Strcpy "$TEMP2" "$(SCRIPTSAMPLE4)"
  109. !insertmacro MUI_INSTALLOPTIONS_READ $TEMP1 "MathTest.ini" "Field 9" "State"
  110. IntCmp $TEMP1 1 Write
  111. Strcpy "$TEMP2" "$(SCRIPTSAMPLE5)"
  112. Write:
  113. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 2" "State" "$TEMP2"
  114. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 5" "State" "1"
  115. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 6" "State" "0"
  116. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 7" "State" "0"
  117. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 8" "State" "0"
  118. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 9" "State" "0"
  119. !insertmacro MUI_INSTALLOPTIONS_WRITE "MathTest.ini" "Field 10" "State" "0"
  120. Test:
  121. Strcmp $TEMP3 "success" Again
  122. FunctionEnd
  123. Section "Dummy Section" SecDummy
  124. SectionEnd