InstallOptions.nsh 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244
  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. !ifdef NSIS_UNICODE
  101. InstallOptions::make_unicode "$PLUGINSDIR\${FILE}"
  102. !endif
  103. !insertmacro INSTALLOPTIONS_WRITE "${FILE}" "Settings" "RTL" "$(^RTL)"
  104. !macroend
  105. !macro INSTALLOPTIONS_EXTRACT_AS FILE FILENAME
  106. InitPluginsDir
  107. File "/oname=$PLUGINSDIR\${FILENAME}" "${FILE}"
  108. !ifdef NSIS_UNICODE
  109. InstallOptions::make_unicode "$PLUGINSDIR\${FILENAME}"
  110. !endif
  111. !insertmacro INSTALLOPTIONS_WRITE "${FILENAME}" "Settings" "RTL" "$(^RTL)"
  112. !macroend
  113. !macro INSTALLOPTIONS_DISPLAY FILE
  114. Push $0
  115. InstallOptions::dialog "$PLUGINSDIR\${FILE}"
  116. Pop $0
  117. Pop $0
  118. !macroend
  119. !macro INSTALLOPTIONS_DISPLAY_RETURN FILE
  120. InstallOptions::dialog "$PLUGINSDIR\${FILE}"
  121. !macroend
  122. !macro INSTALLOPTIONS_INITDIALOG FILE
  123. InstallOptions::initDialog "$PLUGINSDIR\${FILE}"
  124. !macroend
  125. !macro INSTALLOPTIONS_SHOW
  126. Push $0
  127. InstallOptions::show
  128. Pop $0
  129. Pop $0
  130. !macroend
  131. !macro INSTALLOPTIONS_SHOW_RETURN
  132. InstallOptions::show
  133. !macroend
  134. !macro INSTALLOPTIONS_READ VAR FILE SECTION KEY
  135. ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
  136. !macroend
  137. !macro INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE
  138. WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" "${VALUE}"
  139. !macroend
  140. !macro INSTALLOPTIONS_READ_CONVERT VAR FILE SECTION KEY
  141. ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
  142. Push ${VAR}
  143. Call Io2Nsis
  144. Pop ${VAR}
  145. !macroend
  146. !macro INSTALLOPTIONS_READ_UNCONVERT VAR FILE SECTION KEY
  147. ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
  148. Push ${VAR}
  149. Call un.Io2Nsis
  150. Pop ${VAR}
  151. !macroend
  152. !macro INSTALLOPTIONS_WRITE_CONVERT FILE SECTION KEY VALUE
  153. Push $0
  154. StrCpy $0 "${VALUE}"
  155. Push $0
  156. Call Nsis2Io
  157. Pop $0
  158. WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
  159. Pop $0
  160. !macroend
  161. !macro INSTALLOPTIONS_WRITE_UNCONVERT FILE SECTION KEY VALUE
  162. Push $0
  163. StrCpy $0 "${VALUE}"
  164. Push $0
  165. Call un.Nsis2Io
  166. Pop $0
  167. WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
  168. Pop $0
  169. !macroend
  170. !endif # ___NSIS__INSTALL_OPTIONS__NSH___