Statistiques
| Révision :

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

Historique | Voir | Annoter | Télécharger (4,71 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
!ifdef NSIS_UNICODE
129
  InstallOptions::make_unicode "$PLUGINSDIR\${FILE}"
130
!endif
131
  !insertmacro INSTALLOPTIONS_WRITE "${FILE}" "Settings" "RTL" "$(^RTL)"
132

    
133
!macroend
134

    
135
!macro INSTALLOPTIONS_EXTRACT_AS FILE FILENAME
136

    
137
  InitPluginsDir
138
  File "/oname=$PLUGINSDIR\${FILENAME}" "${FILE}"
139
!ifdef NSIS_UNICODE
140
  InstallOptions::make_unicode "$PLUGINSDIR\${FILENAME}"
141
!endif
142
  !insertmacro INSTALLOPTIONS_WRITE "${FILENAME}" "Settings" "RTL" "$(^RTL)"
143

    
144
!macroend
145

    
146
!macro INSTALLOPTIONS_DISPLAY FILE
147

    
148
  Push $0
149

    
150
  InstallOptions::dialog "$PLUGINSDIR\${FILE}"
151
  Pop $0
152

    
153
  Pop $0
154

    
155
!macroend
156

    
157
!macro INSTALLOPTIONS_DISPLAY_RETURN FILE
158

    
159
  InstallOptions::dialog "$PLUGINSDIR\${FILE}"
160

    
161
!macroend
162

    
163
!macro INSTALLOPTIONS_INITDIALOG FILE
164

    
165
  InstallOptions::initDialog "$PLUGINSDIR\${FILE}"
166

    
167
!macroend
168

    
169
!macro INSTALLOPTIONS_SHOW
170

    
171
  Push $0
172

    
173
  InstallOptions::show
174
  Pop $0
175

    
176
  Pop $0
177

    
178
!macroend
179

    
180
!macro INSTALLOPTIONS_SHOW_RETURN
181

    
182
  InstallOptions::show
183

    
184
!macroend
185

    
186
!macro INSTALLOPTIONS_READ VAR FILE SECTION KEY
187

    
188
  ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
189

    
190
!macroend
191

    
192
!macro INSTALLOPTIONS_WRITE FILE SECTION KEY VALUE
193

    
194
  WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" "${VALUE}"
195

    
196
!macroend
197

    
198
!macro INSTALLOPTIONS_READ_CONVERT VAR FILE SECTION KEY
199

    
200
  ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
201
  Push ${VAR}
202
  Call Io2Nsis
203
  Pop ${VAR}
204

    
205
!macroend
206

    
207
!macro INSTALLOPTIONS_READ_UNCONVERT VAR FILE SECTION KEY
208

    
209
  ReadIniStr ${VAR} "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}"
210
  Push ${VAR}
211
  Call un.Io2Nsis
212
  Pop ${VAR}
213

    
214
!macroend
215

    
216
!macro INSTALLOPTIONS_WRITE_CONVERT FILE SECTION KEY VALUE
217

    
218
  Push $0
219
  StrCpy $0 "${VALUE}"
220
  Push $0
221
  Call Nsis2Io
222
  Pop $0
223
  
224
  WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
225

    
226
  Pop $0
227

    
228
!macroend
229
  
230
!macro INSTALLOPTIONS_WRITE_UNCONVERT FILE SECTION KEY VALUE
231

    
232
  Push $0
233
  StrCpy $0 "${VALUE}"
234
  Push $0
235
  Call un.Nsis2Io
236
  Pop $0
237
  
238
  WriteIniStr "$PLUGINSDIR\${FILE}" "${SECTION}" "${KEY}" $0
239

    
240
  Pop $0
241

    
242
!macroend
243

    
244
!endif # ___NSIS__INSTALL_OPTIONS__NSH___