245 lines
4.5 KiB
Plaintext
245 lines
4.5 KiB
Plaintext
|
/*
|
||
|
|
||
|
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___
|