InstallOptions.nsh 4.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240
  1. /*
  2. InstallOptions.nsh
  3. Macros and conversion functions for InstallOptions
  4. */
  5. !ifndef ___NSIS__INSTALL_OPTIONS__NSH___
  6. !define ___NSIS__INSTALL_OPTIONS__NSH___
  7. !include LogicLib.nsh
  8. !macro INSTALLOPTIONS_FUNCTION_READ_CONVERT
  9. !insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS ""
  10. !macroend
  11. !macro INSTALLOPTIONS_UNFUNCTION_READ_CONVERT
  12. !insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS un.
  13. !macroend
  14. !macro INSTALLOPTIONS_FUNCTION_WRITE_CONVERT
  15. !insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO ""
  16. !macroend
  17. !macro INSTALLOPTIONS_UNFUNCTION_WRITE_CONVERT
  18. !insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO un.
  19. !macroend
  20. !macro INSTALLOPTIONS_FUNCTION_NSIS2IO UNINSTALLER_FUNCPREFIX
  21. ; Convert an NSIS string to a form suitable for use by InstallOptions
  22. ; Usage:
  23. ; Push <NSIS-string>
  24. ; Call Nsis2Io
  25. ; Pop <IO-string>
  26. Function ${UNINSTALLER_FUNCPREFIX}Nsis2Io
  27. Exch $0 ; The source
  28. Push $1 ; The output
  29. Push $2 ; Temporary char
  30. Push $3 ; Length
  31. Push $4 ; Loop index
  32. StrCpy $1 "" ; Initialise the output
  33. StrLen $3 $0
  34. IntOp $3 $3 - 1
  35. ${For} $4 0 $3
  36. StrCpy $2 $0 1 $4
  37. ${If} $2 == '\'
  38. StrCpy $2 '\\'
  39. ${ElseIf} $2 == '$\r'
  40. StrCpy $2 '\r'
  41. ${ElseIf} $2 == '$\n'
  42. StrCpy $2 '\n'
  43. ${ElseIf} $2 == '$\t'
  44. StrCpy $2 '\t'
  45. ${EndIf}
  46. StrCpy $1 $1$2
  47. ${Next}
  48. StrCpy $0 $1
  49. Pop $4
  50. Pop $3
  51. Pop $2
  52. Pop $1
  53. Exch $0
  54. FunctionEnd
  55. !macroend
  56. !macro INSTALLOPTIONS_FUNCTION_IO2NSIS UNINSTALLER_FUNCPREFIX
  57. ; Convert an InstallOptions string to a form suitable for use by NSIS
  58. ; Usage:
  59. ; Push <IO-string>
  60. ; Call Io2Nsis
  61. ; Pop <NSIS-string>
  62. Function ${UNINSTALLER_FUNCPREFIX}Io2Nsis
  63. Exch $0 ; The source
  64. Push $1 ; The output
  65. Push $2 ; Temporary char
  66. Push $3 ; Length
  67. Push $4 ; Loop index
  68. StrCpy $1 "" ; Initialise the output
  69. StrLen $3 $0
  70. IntOp $3 $3 - 1
  71. ${For} $4 0 $3
  72. StrCpy $2 $0 2 $4
  73. ${If} $2 == '\\'
  74. StrCpy $2 '\'
  75. IntOp $4 $4 + 1
  76. ${ElseIf} $2 == '\r'
  77. StrCpy $2 '$\r'
  78. IntOp $4 $4 + 1
  79. ${ElseIf} $2 == '\n'
  80. StrCpy $2 '$\n'
  81. IntOp $4 $4 + 1
  82. ${ElseIf} $2 == '\t'
  83. StrCpy $2 '$\t'
  84. IntOp $4 $4 + 1
  85. ${EndIf}
  86. StrCpy $2 $2 1
  87. StrCpy $1 $1$2
  88. ${Next}
  89. StrCpy $0 $1
  90. Pop $4
  91. Pop $3
  92. Pop $2
  93. Pop $1
  94. Exch $0
  95. FunctionEnd
  96. !macroend
  97. !macro INSTALLOPTIONS_EXTRACT FILE
  98. InitPluginsDir
  99. File "/oname=$PLUGINSDIR\${FILE}" "${FILE}"
  100. !insertmacro INSTALLOPTIONS_WRITE "${FILE}" "Settings" "RTL" "$(^RTL)"
  101. !verbose pop
  102. !macroend
  103. !macro INSTALLOPTIONS_EXTRACT_AS FILE FILENAME
  104. InitPluginsDir
  105. File "/oname=$PLUGINSDIR\${FILENAME}" "${FILE}"
  106. !insertmacro INSTALLOPTIONS_WRITE "${FILENAME}" "Settings" "RTL" "$(^RTL)"
  107. !macroend
  108. !macro INSTALLOPTIONS_DISPLAY FILE
  109. Push $0
  110. InstallOptions::dialog "$PLUGINSDIR\${FILE}"
  111. Pop $0
  112. Pop $0
  113. !macroend
  114. !macro INSTALLOPTIONS_DISPLAY_RETURN FILE
  115. InstallOptions::dialog "$PLUGINSDIR\${FILE}"
  116. !macroend
  117. !macro INSTALLOPTIONS_INITDIALOG FILE
  118. InstallOptions::initDialog "$PLUGINSDIR\${FILE}"
  119. !macroend
  120. !macro INSTALLOPTIONS_SHOW
  121. Push $0
  122. InstallOptions::show
  123. Pop $0
  124. Pop $0
  125. !macroend
  126. !macro INSTALLOPTIONS_SHOW_RETURN
  127. InstallOptions::show
  128. !macroend
  129. !macro INSTALLOPTIONS_READ VAR FILE SECTION KEY
  130. ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
  131. !macroend
  132. !macro INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE
  133. WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" "${VALUE}"
  134. !macroend
  135. !macro INSTALLOPTIONS_READ_CONVERT VAR FILE SECTION KEY
  136. ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
  137. Push ${VAR}
  138. Call Io2Nsis
  139. Pop ${VAR}
  140. !macroend
  141. !macro INSTALLOPTIONS_READ_UNCONVERT VAR FILE SECTION KEY
  142. ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
  143. Push ${VAR}
  144. Call un.Io2Nsis
  145. Pop ${VAR}
  146. !macroend
  147. !macro INSTALLOPTIONS_WRITE_CONVERT FILE SECTION KEY VALUE
  148. Push $0
  149. StrCpy $0 "${VALUE}"
  150. Push $0
  151. Call Nsis2Io
  152. Pop $0
  153. WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
  154. Pop $0
  155. !macroend
  156. !macro INSTALLOPTIONS_WRITE_UNCONVERT FILE SECTION KEY VALUE
  157. Push $0
  158. StrCpy $0 "${VALUE}"
  159. Push $0
  160. Call un.Nsis2Io
  161. Pop $0
  162. WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
  163. Pop $0
  164. !macroend
  165. !endif # ___NSIS__INSTALL_OPTIONS__NSH___