Statistiques
| Révision :

root / tmp / org.txm.setups / nsis / Include / InstallOptions.nsh @ 2021

Historique | Voir | Annoter | Télécharger (4,56 ko)

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___