home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Programming / nsis-2.46-setup.exe / Include / InstallOptions.nsh < prev    next >
Encoding:
Text File  |  2008-12-20  |  4.6 KB  |  241 lines

  1. /*
  2.  
  3. InstallOptions.nsh
  4. Macros and conversion functions for InstallOptions
  5.  
  6. */
  7.  
  8. !ifndef ___NSIS__INSTALL_OPTIONS__NSH___
  9. !define ___NSIS__INSTALL_OPTIONS__NSH___
  10.  
  11. !include LogicLib.nsh
  12.  
  13. !macro INSTALLOPTIONS_FUNCTION_READ_CONVERT
  14.   !insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS ""
  15. !macroend
  16.  
  17. !macro INSTALLOPTIONS_UNFUNCTION_READ_CONVERT
  18.   !insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS un.
  19. !macroend
  20.  
  21. !macro INSTALLOPTIONS_FUNCTION_WRITE_CONVERT
  22.   !insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO ""
  23. !macroend
  24.  
  25. !macro INSTALLOPTIONS_UNFUNCTION_WRITE_CONVERT
  26.   !insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO un.
  27. !macroend
  28.  
  29. !macro INSTALLOPTIONS_FUNCTION_NSIS2IO UNINSTALLER_FUNCPREFIX
  30.  
  31.   ; Convert an NSIS string to a form suitable for use by InstallOptions
  32.   ; Usage:
  33.   ;   Push <NSIS-string>
  34.   ;   Call Nsis2Io
  35.   ;   Pop <IO-string>
  36.  
  37.   Function ${UNINSTALLER_FUNCPREFIX}Nsis2Io
  38.  
  39.     Exch $0 ; The source
  40.     Push $1 ; The output
  41.     Push $2 ; Temporary char
  42.     Push $3 ; Length
  43.     Push $4 ; Loop index
  44.     StrCpy $1 "" ; Initialise the output
  45.  
  46.     StrLen $3 $0
  47.     IntOp $3 $3 - 1
  48.  
  49.     ${For} $4 0 $3
  50.       StrCpy $2 $0 1 $4
  51.       ${If}     $2 == '\'
  52.         StrCpy $2 '\\'
  53.       ${ElseIf} $2 == '$\r'
  54.         StrCpy $2 '\r'
  55.       ${ElseIf} $2 == '$\n'
  56.         StrCpy $2 '\n'
  57.       ${ElseIf} $2 == '$\t'
  58.         StrCpy $2 '\t'
  59.       ${EndIf}
  60.       StrCpy $1 $1$2
  61.     ${Next}
  62.  
  63.     StrCpy $0 $1
  64.     Pop $4
  65.     Pop $3
  66.     Pop $2
  67.     Pop $1
  68.     Exch $0
  69.  
  70.   FunctionEnd
  71.  
  72. !macroend
  73.  
  74. !macro INSTALLOPTIONS_FUNCTION_IO2NSIS UNINSTALLER_FUNCPREFIX
  75.  
  76.   ; Convert an InstallOptions string to a form suitable for use by NSIS
  77.   ; Usage:
  78.   ;   Push <IO-string>
  79.   ;   Call Io2Nsis
  80.   ;   Pop <NSIS-string>
  81.  
  82.   Function ${UNINSTALLER_FUNCPREFIX}Io2Nsis
  83.  
  84.     Exch $0 ; The source
  85.     Push $1 ; The output
  86.     Push $2 ; Temporary char
  87.     Push $3 ; Length
  88.     Push $4 ; Loop index
  89.     StrCpy $1 "" ; Initialise the output
  90.  
  91.     StrLen $3 $0
  92.     IntOp $3 $3 - 1
  93.  
  94.     ${For} $4 0 $3
  95.       StrCpy $2 $0 2 $4
  96.       ${If}     $2 == '\\'
  97.         StrCpy $2 '\'
  98.         IntOp $4 $4 + 1
  99.       ${ElseIf} $2 == '\r'
  100.         StrCpy $2 '$\r'
  101.         IntOp $4 $4 + 1
  102.       ${ElseIf} $2 == '\n'
  103.         StrCpy $2 '$\n'
  104.         IntOp $4 $4 + 1
  105.       ${ElseIf} $2 == '\t'
  106.         StrCpy $2 '$\t'
  107.         IntOp $4 $4 + 1
  108.       ${EndIf}
  109.       StrCpy $2 $2 1
  110.       StrCpy $1 $1$2
  111.     ${Next}
  112.  
  113.     StrCpy $0 $1
  114.     Pop $4
  115.     Pop $3
  116.     Pop $2
  117.     Pop $1
  118.     Exch $0
  119.  
  120.   FunctionEnd
  121.  
  122. !macroend
  123.  
  124. !macro INSTALLOPTIONS_EXTRACT FILE
  125.  
  126.   InitPluginsDir
  127.   File "/oname=$PLUGINSDIR\${FILE}" "${FILE}"
  128.   !insertmacro INSTALLOPTIONS_WRITE "${FILE}" "Settings" "RTL" "$(^RTL)"
  129.  
  130.   !verbose pop
  131.  
  132. !macroend
  133.  
  134. !macro INSTALLOPTIONS_EXTRACT_AS FILE FILENAME
  135.  
  136.   InitPluginsDir
  137.   File "/oname=$PLUGINSDIR\${FILENAME}" "${FILE}"
  138.   !insertmacro INSTALLOPTIONS_WRITE "${FILENAME}" "Settings" "RTL" "$(^RTL)"
  139.  
  140. !macroend
  141.  
  142. !macro INSTALLOPTIONS_DISPLAY FILE
  143.  
  144.   Push $0
  145.  
  146.   InstallOptions::dialog "$PLUGINSDIR\${FILE}"
  147.   Pop $0
  148.  
  149.   Pop $0
  150.  
  151. !macroend
  152.  
  153. !macro INSTALLOPTIONS_DISPLAY_RETURN FILE
  154.  
  155.   InstallOptions::dialog "$PLUGINSDIR\${FILE}"
  156.  
  157. !macroend
  158.  
  159. !macro INSTALLOPTIONS_INITDIALOG FILE
  160.  
  161.   InstallOptions::initDialog "$PLUGINSDIR\${FILE}"
  162.  
  163. !macroend
  164.  
  165. !macro INSTALLOPTIONS_SHOW
  166.  
  167.   Push $0
  168.  
  169.   InstallOptions::show
  170.   Pop $0
  171.  
  172.   Pop $0
  173.  
  174. !macroend
  175.  
  176. !macro INSTALLOPTIONS_SHOW_RETURN
  177.  
  178.   InstallOptions::show
  179.  
  180. !macroend
  181.  
  182. !macro INSTALLOPTIONS_READ VAR FILE SECTION KEY
  183.  
  184.   ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
  185.  
  186. !macroend
  187.  
  188. !macro INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE
  189.  
  190.   WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" "${VALUE}"
  191.  
  192. !macroend
  193.  
  194. !macro INSTALLOPTIONS_READ_CONVERT VAR FILE SECTION KEY
  195.  
  196.   ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
  197.   Push ${VAR}
  198.   Call Io2Nsis
  199.   Pop ${VAR}
  200.  
  201. !macroend
  202.  
  203. !macro INSTALLOPTIONS_READ_UNCONVERT VAR FILE SECTION KEY
  204.  
  205.   ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
  206.   Push ${VAR}
  207.   Call un.Io2Nsis
  208.   Pop ${VAR}
  209.  
  210. !macroend
  211.  
  212. !macro INSTALLOPTIONS_WRITE_CONVERT FILE SECTION KEY VALUE
  213.  
  214.   Push $0
  215.   StrCpy $0 "${VALUE}"
  216.   Push $0
  217.   Call Nsis2Io
  218.   Pop $0
  219.   
  220.   WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
  221.  
  222.   Pop $0
  223.  
  224. !macroend
  225.   
  226. !macro INSTALLOPTIONS_WRITE_UNCONVERT FILE SECTION KEY VALUE
  227.  
  228.   Push $0
  229.   StrCpy $0 "${VALUE}"
  230.   Push $0
  231.   Call un.Nsis2Io
  232.   Pop $0
  233.   
  234.   WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
  235.  
  236.   Pop $0
  237.  
  238. !macroend
  239.  
  240. !endif # ___NSIS__INSTALL_OPTIONS__NSH___
  241.