123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- /*
- InstallOptions.nsh
- Macros and conversion functions for InstallOptions
- */
- !ifndef ___NSIS__INSTALL_OPTIONS__NSH___
- !define ___NSIS__INSTALL_OPTIONS__NSH___
- !include LogicLib.nsh
- !macro INSTALLOPTIONS_FUNCTION_READ_CONVERT
- !insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS ""
- !macroend
- !macro INSTALLOPTIONS_UNFUNCTION_READ_CONVERT
- !insertmacro INSTALLOPTIONS_FUNCTION_IO2NSIS un.
- !macroend
- !macro INSTALLOPTIONS_FUNCTION_WRITE_CONVERT
- !insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO ""
- !macroend
- !macro INSTALLOPTIONS_UNFUNCTION_WRITE_CONVERT
- !insertmacro INSTALLOPTIONS_FUNCTION_NSIS2IO un.
- !macroend
- !macro INSTALLOPTIONS_FUNCTION_NSIS2IO UNINSTALLER_FUNCPREFIX
- ; Convert an NSIS string to a form suitable for use by InstallOptions
- ; Usage:
- ; Push <NSIS-string>
- ; Call Nsis2Io
- ; Pop <IO-string>
- Function ${UNINSTALLER_FUNCPREFIX}Nsis2Io
- Exch $0 ; The source
- Push $1 ; The output
- Push $2 ; Temporary char
- Push $3 ; Length
- Push $4 ; Loop index
- StrCpy $1 "" ; Initialise the output
- StrLen $3 $0
- IntOp $3 $3 - 1
- ${For} $4 0 $3
- StrCpy $2 $0 1 $4
- ${If} $2 == '\'
- StrCpy $2 '\\'
- ${ElseIf} $2 == '$\r'
- StrCpy $2 '\r'
- ${ElseIf} $2 == '$\n'
- StrCpy $2 '\n'
- ${ElseIf} $2 == '$\t'
- StrCpy $2 '\t'
- ${EndIf}
- StrCpy $1 $1$2
- ${Next}
- StrCpy $0 $1
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Exch $0
- FunctionEnd
- !macroend
- !macro INSTALLOPTIONS_FUNCTION_IO2NSIS UNINSTALLER_FUNCPREFIX
- ; Convert an InstallOptions string to a form suitable for use by NSIS
- ; Usage:
- ; Push <IO-string>
- ; Call Io2Nsis
- ; Pop <NSIS-string>
- Function ${UNINSTALLER_FUNCPREFIX}Io2Nsis
- Exch $0 ; The source
- Push $1 ; The output
- Push $2 ; Temporary char
- Push $3 ; Length
- Push $4 ; Loop index
- StrCpy $1 "" ; Initialise the output
- StrLen $3 $0
- IntOp $3 $3 - 1
- ${For} $4 0 $3
- StrCpy $2 $0 2 $4
- ${If} $2 == '\\'
- StrCpy $2 '\'
- IntOp $4 $4 + 1
- ${ElseIf} $2 == '\r'
- StrCpy $2 '$\r'
- IntOp $4 $4 + 1
- ${ElseIf} $2 == '\n'
- StrCpy $2 '$\n'
- IntOp $4 $4 + 1
- ${ElseIf} $2 == '\t'
- StrCpy $2 '$\t'
- IntOp $4 $4 + 1
- ${EndIf}
- StrCpy $2 $2 1
- StrCpy $1 $1$2
- ${Next}
- StrCpy $0 $1
- Pop $4
- Pop $3
- Pop $2
- Pop $1
- Exch $0
- FunctionEnd
- !macroend
- !macro INSTALLOPTIONS_EXTRACT FILE
- InitPluginsDir
- File "/oname=$PLUGINSDIR\${FILE}" "${FILE}"
- !ifdef NSIS_UNICODE
- InstallOptions::make_unicode "$PLUGINSDIR\${FILE}"
- !endif
- !insertmacro INSTALLOPTIONS_WRITE "${FILE}" "Settings" "RTL" "$(^RTL)"
- !macroend
- !macro INSTALLOPTIONS_EXTRACT_AS FILE FILENAME
- InitPluginsDir
- File "/oname=$PLUGINSDIR\${FILENAME}" "${FILE}"
- !ifdef NSIS_UNICODE
- InstallOptions::make_unicode "$PLUGINSDIR\${FILENAME}"
- !endif
- !insertmacro INSTALLOPTIONS_WRITE "${FILENAME}" "Settings" "RTL" "$(^RTL)"
- !macroend
- !macro INSTALLOPTIONS_DISPLAY FILE
- Push $0
- InstallOptions::dialog "$PLUGINSDIR\${FILE}"
- Pop $0
- Pop $0
- !macroend
- !macro INSTALLOPTIONS_DISPLAY_RETURN FILE
- InstallOptions::dialog "$PLUGINSDIR\${FILE}"
- !macroend
- !macro INSTALLOPTIONS_INITDIALOG FILE
- InstallOptions::initDialog "$PLUGINSDIR\${FILE}"
- !macroend
- !macro INSTALLOPTIONS_SHOW
- Push $0
- InstallOptions::show
- Pop $0
- Pop $0
- !macroend
- !macro INSTALLOPTIONS_SHOW_RETURN
- InstallOptions::show
- !macroend
- !macro INSTALLOPTIONS_READ VAR FILE SECTION KEY
- ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
- !macroend
- !macro INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE
- WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" "${VALUE}"
- !macroend
- !macro INSTALLOPTIONS_READ_CONVERT VAR FILE SECTION KEY
- ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
- Push ${VAR}
- Call Io2Nsis
- Pop ${VAR}
- !macroend
- !macro INSTALLOPTIONS_READ_UNCONVERT VAR FILE SECTION KEY
- ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
- Push ${VAR}
- Call un.Io2Nsis
- Pop ${VAR}
- !macroend
- !macro INSTALLOPTIONS_WRITE_CONVERT FILE SECTION KEY VALUE
- Push $0
- StrCpy $0 "${VALUE}"
- Push $0
- Call Nsis2Io
- Pop $0
-
- WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
- Pop $0
- !macroend
-
- !macro INSTALLOPTIONS_WRITE_UNCONVERT FILE SECTION KEY VALUE
- Push $0
- StrCpy $0 "${VALUE}"
- Push $0
- Call un.Nsis2Io
- Pop $0
-
- WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
- Pop $0
- !macroend
- !endif # ___NSIS__INSTALL_OPTIONS__NSH___
|