root / tmp / org.txm.setups / nsis / Include / FileFunc.nsh @ 2107
Historique | Voir | Annoter | Télécharger (39,57 ko)
1 |
/* |
---|---|
2 |
_____________________________________________________________________________ |
3 |
|
4 |
File Functions Header v3.4 |
5 |
_____________________________________________________________________________ |
6 |
|
7 |
2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru) |
8 |
|
9 |
See documentation for more information about the following functions. |
10 |
|
11 |
Usage in script: |
12 |
1. !include "FileFunc.nsh" |
13 |
2. [Section|Function] |
14 |
${FileFunction} "Param1" "Param2" "..." $var |
15 |
[SectionEnd|FunctionEnd] |
16 |
|
17 |
|
18 |
FileFunction=[Locate|GetSize|DriveSpace|GetDrives|GetTime|GetFileAttributes| |
19 |
GetFileVersion|GetExeName|GetExePath|GetParameters|GetOptions| |
20 |
GetOptionsS|GetRoot|GetParent|GetFileName|GetBaseName|GetFileExt| |
21 |
BannerTrimPath|DirState|RefreshShellIcons] |
22 |
|
23 |
_____________________________________________________________________________ |
24 |
|
25 |
Thanks to: |
26 |
_____________________________________________________________________________ |
27 |
|
28 |
GetSize |
29 |
KiCHiK (Function "FindFiles") |
30 |
DriveSpace |
31 |
sunjammer (Function "CheckSpaceFree") |
32 |
GetDrives |
33 |
deguix (Based on his idea of Function "DetectDrives") |
34 |
GetTime |
35 |
Takhir (Script "StatTest") and deguix (Function "FileModifiedDate") |
36 |
GetFileVersion |
37 |
KiCHiK (Based on his example for command "GetDLLVersion") |
38 |
GetParameters |
39 |
sunjammer (Based on his Function "GetParameters") |
40 |
GetRoot |
41 |
KiCHiK (Based on his Function "GetRoot") |
42 |
GetParent |
43 |
sunjammer (Based on his Function "GetParent") |
44 |
GetFileName |
45 |
KiCHiK (Based on his Function "GetFileName") |
46 |
GetBaseName |
47 |
comperio (Based on his idea of Function "GetBaseName") |
48 |
GetFileExt |
49 |
opher (author) |
50 |
RefreshShellIcons |
51 |
jerome tremblay (author) |
52 |
*/ |
53 |
|
54 |
|
55 |
;_____________________________________________________________________________ |
56 |
; |
57 |
; Macros |
58 |
;_____________________________________________________________________________ |
59 |
; |
60 |
; Change log window verbosity (default: 3=no script) |
61 |
; |
62 |
; Example: |
63 |
; !include "FileFunc.nsh" |
64 |
; !insertmacro Locate |
65 |
; ${FILEFUNC_VERBOSE} 4 # all verbosity |
66 |
; !insertmacro VersionCompare |
67 |
; ${FILEFUNC_VERBOSE} 3 # no script |
68 |
|
69 |
!ifndef FILEFUNC_INCLUDED |
70 |
!define FILEFUNC_INCLUDED |
71 |
|
72 |
!include Util.nsh |
73 |
|
74 |
!verbose push |
75 |
!verbose 3 |
76 |
!ifndef _FILEFUNC_VERBOSE |
77 |
!define _FILEFUNC_VERBOSE 3 |
78 |
!endif |
79 |
!verbose ${_FILEFUNC_VERBOSE} |
80 |
!define FILEFUNC_VERBOSE `!insertmacro FILEFUNC_VERBOSE` |
81 |
!verbose pop |
82 |
|
83 |
!macro FILEFUNC_VERBOSE _VERBOSE |
84 |
!verbose push |
85 |
!verbose 3 |
86 |
!undef _FILEFUNC_VERBOSE |
87 |
!define _FILEFUNC_VERBOSE ${_VERBOSE} |
88 |
!verbose pop |
89 |
!macroend |
90 |
|
91 |
!macro LocateCall _PATH _OPTIONS _FUNC |
92 |
!verbose push |
93 |
!verbose ${_FILEFUNC_VERBOSE} |
94 |
Push $0 |
95 |
Push `${_PATH}` |
96 |
Push `${_OPTIONS}` |
97 |
GetFunctionAddress $0 `${_FUNC}` |
98 |
Push `$0` |
99 |
${CallArtificialFunction} Locate_ |
100 |
Pop $0 |
101 |
!verbose pop |
102 |
!macroend |
103 |
|
104 |
!macro GetSizeCall _PATH _OPTIONS _RESULT1 _RESULT2 _RESULT3 |
105 |
!verbose push |
106 |
!verbose ${_FILEFUNC_VERBOSE} |
107 |
Push `${_PATH}` |
108 |
Push `${_OPTIONS}` |
109 |
${CallArtificialFunction} GetSize_ |
110 |
Pop ${_RESULT1} |
111 |
Pop ${_RESULT2} |
112 |
Pop ${_RESULT3} |
113 |
!verbose pop |
114 |
!macroend |
115 |
|
116 |
!macro DriveSpaceCall _DRIVE _OPTIONS _RESULT |
117 |
!verbose push |
118 |
!verbose ${_FILEFUNC_VERBOSE} |
119 |
Push `${_DRIVE}` |
120 |
Push `${_OPTIONS}` |
121 |
${CallArtificialFunction} DriveSpace_ |
122 |
Pop ${_RESULT} |
123 |
!verbose pop |
124 |
!macroend |
125 |
|
126 |
!macro GetDrivesCall _DRV _FUNC |
127 |
!verbose push |
128 |
!verbose ${_FILEFUNC_VERBOSE} |
129 |
Push $0 |
130 |
Push `${_DRV}` |
131 |
GetFunctionAddress $0 `${_FUNC}` |
132 |
Push `$0` |
133 |
${CallArtificialFunction} GetDrives_ |
134 |
Pop $0 |
135 |
!verbose pop |
136 |
!macroend |
137 |
|
138 |
!macro GetTimeCall _FILE _OPTION _RESULT1 _RESULT2 _RESULT3 _RESULT4 _RESULT5 _RESULT6 _RESULT7 |
139 |
!verbose push |
140 |
!verbose ${_FILEFUNC_VERBOSE} |
141 |
Push `${_FILE}` |
142 |
Push `${_OPTION}` |
143 |
${CallArtificialFunction} GetTime_ |
144 |
Pop ${_RESULT1} |
145 |
Pop ${_RESULT2} |
146 |
Pop ${_RESULT3} |
147 |
Pop ${_RESULT4} |
148 |
Pop ${_RESULT5} |
149 |
Pop ${_RESULT6} |
150 |
Pop ${_RESULT7} |
151 |
!verbose pop |
152 |
!macroend |
153 |
|
154 |
!macro GetFileAttributesCall _PATH _ATTR _RESULT |
155 |
!verbose push |
156 |
!verbose ${_FILEFUNC_VERBOSE} |
157 |
Push `${_PATH}` |
158 |
Push `${_ATTR}` |
159 |
${CallArtificialFunction} GetFileAttributes_ |
160 |
Pop ${_RESULT} |
161 |
!verbose pop |
162 |
!macroend |
163 |
|
164 |
!macro GetFileVersionCall _FILE _RESULT |
165 |
!verbose push |
166 |
!verbose ${_FILEFUNC_VERBOSE} |
167 |
Push `${_FILE}` |
168 |
${CallArtificialFunction} GetFileVersion_ |
169 |
Pop ${_RESULT} |
170 |
!verbose pop |
171 |
!macroend |
172 |
|
173 |
!macro GetExeNameCall _RESULT |
174 |
!verbose push |
175 |
!verbose ${_FILEFUNC_VERBOSE} |
176 |
${CallArtificialFunction} GetExeName_ |
177 |
Pop ${_RESULT} |
178 |
!verbose pop |
179 |
!macroend |
180 |
|
181 |
!macro GetExePathCall _RESULT |
182 |
!verbose push |
183 |
!verbose ${_FILEFUNC_VERBOSE} |
184 |
${CallArtificialFunction} GetExePath_ |
185 |
Pop ${_RESULT} |
186 |
!verbose pop |
187 |
!macroend |
188 |
|
189 |
!macro GetParametersCall _RESULT |
190 |
!verbose push |
191 |
!verbose ${_FILEFUNC_VERBOSE} |
192 |
${CallArtificialFunction} GetParameters_ |
193 |
Pop ${_RESULT} |
194 |
!verbose pop |
195 |
!macroend |
196 |
|
197 |
!macro GetOptionsCall _PARAMETERS _OPTION _RESULT |
198 |
!verbose push |
199 |
!verbose ${_FILEFUNC_VERBOSE} |
200 |
Push `${_PARAMETERS}` |
201 |
Push `${_OPTION}` |
202 |
${CallArtificialFunction} GetOptions_ |
203 |
Pop ${_RESULT} |
204 |
!verbose pop |
205 |
!macroend |
206 |
|
207 |
!macro GetOptionsSCall _PARAMETERS _OPTION _RESULT |
208 |
!verbose push |
209 |
!verbose ${_FILEFUNC_VERBOSE} |
210 |
Push `${_PARAMETERS}` |
211 |
Push `${_OPTION}` |
212 |
${CallArtificialFunction} GetOptionsS_ |
213 |
Pop ${_RESULT} |
214 |
!verbose pop |
215 |
!macroend |
216 |
|
217 |
!macro GetRootCall _FULLPATH _RESULT |
218 |
!verbose push |
219 |
!verbose ${_FILEFUNC_VERBOSE} |
220 |
Push `${_FULLPATH}` |
221 |
${CallArtificialFunction} GetRoot_ |
222 |
Pop ${_RESULT} |
223 |
!verbose pop |
224 |
!macroend |
225 |
|
226 |
!macro GetParentCall _PATHSTRING _RESULT |
227 |
!verbose push |
228 |
!verbose ${_FILEFUNC_VERBOSE} |
229 |
Push `${_PATHSTRING}` |
230 |
${CallArtificialFunction} GetParent_ |
231 |
Pop ${_RESULT} |
232 |
!verbose pop |
233 |
!macroend |
234 |
|
235 |
!macro GetFileNameCall _PATHSTRING _RESULT |
236 |
!verbose push |
237 |
!verbose ${_FILEFUNC_VERBOSE} |
238 |
Push `${_PATHSTRING}` |
239 |
${CallArtificialFunction} GetFileName_ |
240 |
Pop ${_RESULT} |
241 |
!verbose pop |
242 |
!macroend |
243 |
|
244 |
!macro GetBaseNameCall _FILESTRING _RESULT |
245 |
!verbose push |
246 |
!verbose ${_FILEFUNC_VERBOSE} |
247 |
Push `${_FILESTRING}` |
248 |
${CallArtificialFunction} GetBaseName_ |
249 |
Pop ${_RESULT} |
250 |
!verbose pop |
251 |
!macroend |
252 |
|
253 |
!macro GetFileExtCall _FILESTRING _RESULT |
254 |
!verbose push |
255 |
!verbose ${_FILEFUNC_VERBOSE} |
256 |
Push `${_FILESTRING}` |
257 |
${CallArtificialFunction} GetFileExt_ |
258 |
Pop ${_RESULT} |
259 |
!verbose pop |
260 |
!macroend |
261 |
|
262 |
!macro BannerTrimPathCall _PATH _LENGHT _RESULT |
263 |
!verbose push |
264 |
!verbose ${_FILEFUNC_VERBOSE} |
265 |
Push `${_PATH}` |
266 |
Push `${_LENGHT}` |
267 |
${CallArtificialFunction} BannerTrimPath_ |
268 |
Pop ${_RESULT} |
269 |
!verbose pop |
270 |
!macroend |
271 |
|
272 |
!macro DirStateCall _PATH _RESULT |
273 |
!verbose push |
274 |
!verbose ${_FILEFUNC_VERBOSE} |
275 |
Push `${_PATH}` |
276 |
${CallArtificialFunction} DirState_ |
277 |
Pop ${_RESULT} |
278 |
!verbose pop |
279 |
!macroend |
280 |
|
281 |
!macro RefreshShellIconsCall |
282 |
!verbose push |
283 |
!verbose ${_FILEFUNC_VERBOSE} |
284 |
${CallArtificialFunction} RefreshShellIcons_ |
285 |
!verbose pop |
286 |
!macroend |
287 |
|
288 |
!define Locate `!insertmacro LocateCall` |
289 |
!define un.Locate `!insertmacro LocateCall` |
290 |
|
291 |
!macro Locate |
292 |
!macroend |
293 |
|
294 |
!macro un.Locate |
295 |
!macroend |
296 |
|
297 |
!macro Locate_ |
298 |
!verbose push |
299 |
!verbose ${_FILEFUNC_VERBOSE} |
300 |
|
301 |
Exch $2 |
302 |
Exch |
303 |
Exch $1 |
304 |
Exch |
305 |
Exch 2 |
306 |
Exch $0 |
307 |
Exch 2 |
308 |
Push $3 |
309 |
Push $4 |
310 |
Push $5 |
311 |
Push $6 |
312 |
Push $7 |
313 |
Push $8 |
314 |
Push $9 |
315 |
Push $R6 |
316 |
Push $R7 |
317 |
Push $R8 |
318 |
Push $R9 |
319 |
ClearErrors |
320 |
|
321 |
StrCpy $3 '' |
322 |
StrCpy $4 '' |
323 |
StrCpy $5 '' |
324 |
StrCpy $6 '' |
325 |
StrCpy $7 '' |
326 |
StrCpy $8 0 |
327 |
StrCpy $R7 '' |
328 |
|
329 |
StrCpy $R9 $0 1 -1 |
330 |
StrCmp $R9 '\' 0 +3 |
331 |
StrCpy $0 $0 -1 |
332 |
goto -3 |
333 |
IfFileExists '$0\*.*' 0 FileFunc_Locate_error |
334 |
|
335 |
FileFunc_Locate_option: |
336 |
StrCpy $R9 $1 1 |
337 |
StrCpy $1 $1 '' 1 |
338 |
StrCmp $R9 ' ' -2 |
339 |
StrCmp $R9 '' FileFunc_Locate_sizeset |
340 |
StrCmp $R9 '/' 0 -4 |
341 |
StrCpy $9 -1 |
342 |
IntOp $9 $9 + 1 |
343 |
StrCpy $R9 $1 1 $9 |
344 |
StrCmp $R9 '' +2 |
345 |
StrCmp $R9 '/' 0 -3 |
346 |
StrCpy $R8 $1 $9 |
347 |
StrCpy $R8 $R8 '' 2 |
348 |
StrCpy $R9 $R8 '' -1 |
349 |
StrCmp $R9 ' ' 0 +3 |
350 |
StrCpy $R8 $R8 -1 |
351 |
goto -3 |
352 |
StrCpy $R9 $1 2 |
353 |
StrCpy $1 $1 '' $9 |
354 |
|
355 |
StrCmp $R9 'L=' 0 FileFunc_Locate_mask |
356 |
StrCpy $3 $R8 |
357 |
StrCmp $3 '' +6 |
358 |
StrCmp $3 'FD' +5 |
359 |
StrCmp $3 'F' +4 |
360 |
StrCmp $3 'D' +3 |
361 |
StrCmp $3 'DE' +2 |
362 |
StrCmp $3 'FDE' 0 FileFunc_Locate_error |
363 |
goto FileFunc_Locate_option |
364 |
|
365 |
FileFunc_Locate_mask: |
366 |
StrCmp $R9 'M=' 0 FileFunc_Locate_size |
367 |
StrCpy $4 $R8 |
368 |
goto FileFunc_Locate_option |
369 |
|
370 |
FileFunc_Locate_size: |
371 |
StrCmp $R9 'S=' 0 FileFunc_Locate_gotosubdir |
372 |
StrCpy $6 $R8 |
373 |
goto FileFunc_Locate_option |
374 |
|
375 |
FileFunc_Locate_gotosubdir: |
376 |
StrCmp $R9 'G=' 0 FileFunc_Locate_banner |
377 |
StrCpy $7 $R8 |
378 |
StrCmp $7 '' +3 |
379 |
StrCmp $7 '1' +2 |
380 |
StrCmp $7 '0' 0 FileFunc_Locate_error |
381 |
goto FileFunc_Locate_option |
382 |
|
383 |
FileFunc_Locate_banner: |
384 |
StrCmp $R9 'B=' 0 FileFunc_Locate_error |
385 |
StrCpy $R7 $R8 |
386 |
StrCmp $R7 '' +3 |
387 |
StrCmp $R7 '1' +2 |
388 |
StrCmp $R7 '0' 0 FileFunc_Locate_error |
389 |
goto FileFunc_Locate_option |
390 |
|
391 |
FileFunc_Locate_sizeset: |
392 |
StrCmp $6 '' FileFunc_Locate_default |
393 |
StrCpy $9 0 |
394 |
StrCpy $R9 $6 1 $9 |
395 |
StrCmp $R9 '' +4 |
396 |
StrCmp $R9 ':' +3 |
397 |
IntOp $9 $9 + 1 |
398 |
goto -4 |
399 |
StrCpy $5 $6 $9 |
400 |
IntOp $9 $9 + 1 |
401 |
StrCpy $1 $6 1 -1 |
402 |
StrCpy $6 $6 -1 $9 |
403 |
StrCmp $5 '' +2 |
404 |
IntOp $5 $5 + 0 |
405 |
StrCmp $6 '' +2 |
406 |
IntOp $6 $6 + 0 |
407 |
|
408 |
StrCmp $1 'B' 0 +3 |
409 |
StrCpy $1 1 |
410 |
goto FileFunc_Locate_default |
411 |
StrCmp $1 'K' 0 +3 |
412 |
StrCpy $1 1024 |
413 |
goto FileFunc_Locate_default |
414 |
StrCmp $1 'M' 0 +3 |
415 |
StrCpy $1 1048576 |
416 |
goto FileFunc_Locate_default |
417 |
StrCmp $1 'G' 0 FileFunc_Locate_error |
418 |
StrCpy $1 1073741824 |
419 |
|
420 |
FileFunc_Locate_default: |
421 |
StrCmp $3 '' 0 +2 |
422 |
StrCpy $3 'FD' |
423 |
StrCmp $4 '' 0 +2 |
424 |
StrCpy $4 '*.*' |
425 |
StrCmp $7 '' 0 +2 |
426 |
StrCpy $7 '1' |
427 |
StrCmp $R7 '' 0 +2 |
428 |
StrCpy $R7 '0' |
429 |
StrCpy $7 'G$7B$R7' |
430 |
|
431 |
StrCpy $8 1 |
432 |
Push $0 |
433 |
SetDetailsPrint textonly |
434 |
|
435 |
FileFunc_Locate_nextdir: |
436 |
IntOp $8 $8 - 1 |
437 |
Pop $R8 |
438 |
|
439 |
StrCpy $9 $7 2 2 |
440 |
StrCmp $9 'B0' +3 |
441 |
GetLabelAddress $9 FileFunc_Locate_findfirst |
442 |
goto call |
443 |
DetailPrint 'Search in: $R8' |
444 |
|
445 |
FileFunc_Locate_findfirst: |
446 |
FindFirst $0 $R7 '$R8\$4' |
447 |
IfErrors FileFunc_Locate_subdir |
448 |
StrCmp $R7 '.' 0 FileFunc_Locate_dir |
449 |
FindNext $0 $R7 |
450 |
StrCmp $R7 '..' 0 FileFunc_Locate_dir |
451 |
FindNext $0 $R7 |
452 |
IfErrors 0 FileFunc_Locate_dir |
453 |
FindClose $0 |
454 |
goto FileFunc_Locate_subdir |
455 |
|
456 |
FileFunc_Locate_dir: |
457 |
IfFileExists '$R8\$R7\*.*' 0 FileFunc_Locate_file |
458 |
StrCpy $R6 '' |
459 |
StrCmp $3 'DE' +4 |
460 |
StrCmp $3 'FDE' +3 |
461 |
StrCmp $3 'FD' FileFunc_Locate_precall |
462 |
StrCmp $3 'F' FileFunc_Locate_findnext FileFunc_Locate_precall |
463 |
FindFirst $9 $R9 '$R8\$R7\*.*' |
464 |
StrCmp $R9 '.' 0 +4 |
465 |
FindNext $9 $R9 |
466 |
StrCmp $R9 '..' 0 +2 |
467 |
FindNext $9 $R9 |
468 |
FindClose $9 |
469 |
IfErrors FileFunc_Locate_precall FileFunc_Locate_findnext |
470 |
|
471 |
FileFunc_Locate_file: |
472 |
StrCmp $3 'FDE' +3 |
473 |
StrCmp $3 'FD' +2 |
474 |
StrCmp $3 'F' 0 FileFunc_Locate_findnext |
475 |
StrCpy $R6 0 |
476 |
StrCmp $5$6 '' FileFunc_Locate_precall |
477 |
FileOpen $9 '$R8\$R7' r |
478 |
IfErrors +3 |
479 |
FileSeek $9 0 END $R6 |
480 |
FileClose $9 |
481 |
System::Int64Op $R6 / $1 |
482 |
Pop $R6 |
483 |
StrCmp $5 '' +2 |
484 |
IntCmp $R6 $5 0 FileFunc_Locate_findnext |
485 |
StrCmp $6 '' +2 |
486 |
IntCmp $R6 $6 0 0 FileFunc_Locate_findnext |
487 |
|
488 |
FileFunc_Locate_precall: |
489 |
StrCpy $9 0 |
490 |
StrCpy $R9 '$R8\$R7' |
491 |
|
492 |
call: |
493 |
Push $0 |
494 |
Push $1 |
495 |
Push $2 |
496 |
Push $3 |
497 |
Push $4 |
498 |
Push $5 |
499 |
Push $6 |
500 |
Push $7 |
501 |
Push $8 |
502 |
Push $9 |
503 |
Push $R7 |
504 |
Push $R8 |
505 |
StrCmp $9 0 +4 |
506 |
StrCpy $R6 '' |
507 |
StrCpy $R7 '' |
508 |
StrCpy $R9 '' |
509 |
Call $2 |
510 |
Pop $R9 |
511 |
Pop $R8 |
512 |
Pop $R7 |
513 |
Pop $9 |
514 |
Pop $8 |
515 |
Pop $7 |
516 |
Pop $6 |
517 |
Pop $5 |
518 |
Pop $4 |
519 |
Pop $3 |
520 |
Pop $2 |
521 |
Pop $1 |
522 |
Pop $0 |
523 |
|
524 |
IfErrors 0 +3 |
525 |
FindClose $0 |
526 |
goto FileFunc_Locate_error |
527 |
StrCmp $R9 'StopLocate' 0 +3 |
528 |
FindClose $0 |
529 |
goto FileFunc_Locate_clearstack |
530 |
goto $9 |
531 |
|
532 |
FileFunc_Locate_findnext: |
533 |
FindNext $0 $R7 |
534 |
IfErrors 0 FileFunc_Locate_dir |
535 |
FindClose $0 |
536 |
|
537 |
FileFunc_Locate_subdir: |
538 |
StrCpy $9 $7 2 |
539 |
StrCmp $9 'G0' FileFunc_Locate_end |
540 |
FindFirst $0 $R7 '$R8\*.*' |
541 |
StrCmp $R7 '.' 0 FileFunc_Locate_pushdir |
542 |
FindNext $0 $R7 |
543 |
StrCmp $R7 '..' 0 FileFunc_Locate_pushdir |
544 |
FindNext $0 $R7 |
545 |
IfErrors 0 FileFunc_Locate_pushdir |
546 |
FindClose $0 |
547 |
StrCmp $8 0 FileFunc_Locate_end FileFunc_Locate_nextdir |
548 |
|
549 |
FileFunc_Locate_pushdir: |
550 |
IfFileExists '$R8\$R7\*.*' 0 +3 |
551 |
Push '$R8\$R7' |
552 |
IntOp $8 $8 + 1 |
553 |
FindNext $0 $R7 |
554 |
IfErrors 0 FileFunc_Locate_pushdir |
555 |
FindClose $0 |
556 |
StrCmp $8 0 FileFunc_Locate_end FileFunc_Locate_nextdir |
557 |
|
558 |
FileFunc_Locate_error: |
559 |
SetErrors |
560 |
|
561 |
FileFunc_Locate_clearstack: |
562 |
StrCmp $8 0 FileFunc_Locate_end |
563 |
IntOp $8 $8 - 1 |
564 |
Pop $R8 |
565 |
goto FileFunc_Locate_clearstack |
566 |
|
567 |
FileFunc_Locate_end: |
568 |
SetDetailsPrint both |
569 |
Pop $R9 |
570 |
Pop $R8 |
571 |
Pop $R7 |
572 |
Pop $R6 |
573 |
Pop $9 |
574 |
Pop $8 |
575 |
Pop $7 |
576 |
Pop $6 |
577 |
Pop $5 |
578 |
Pop $4 |
579 |
Pop $3 |
580 |
Pop $2 |
581 |
Pop $1 |
582 |
Pop $0 |
583 |
|
584 |
!verbose pop |
585 |
!macroend |
586 |
|
587 |
!define GetSize `!insertmacro GetSizeCall` |
588 |
!define un.GetSize `!insertmacro GetSizeCall` |
589 |
|
590 |
!macro GetSize |
591 |
!macroend |
592 |
|
593 |
!macro un.GetSize |
594 |
!macroend |
595 |
|
596 |
!macro GetSize_ |
597 |
!verbose push |
598 |
!verbose ${_FILEFUNC_VERBOSE} |
599 |
|
600 |
Exch $1 |
601 |
Exch |
602 |
Exch $0 |
603 |
Exch |
604 |
Push $2 |
605 |
Push $3 |
606 |
Push $4 |
607 |
Push $5 |
608 |
Push $6 |
609 |
Push $7 |
610 |
Push $8 |
611 |
Push $9 |
612 |
Push $R3 |
613 |
Push $R4 |
614 |
Push $R5 |
615 |
Push $R6 |
616 |
Push $R7 |
617 |
Push $R8 |
618 |
Push $R9 |
619 |
ClearErrors |
620 |
|
621 |
StrCpy $R9 $0 1 -1 |
622 |
StrCmp $R9 '\' 0 +3 |
623 |
StrCpy $0 $0 -1 |
624 |
goto -3 |
625 |
IfFileExists '$0\*.*' 0 FileFunc_GetSize_error |
626 |
|
627 |
StrCpy $3 '' |
628 |
StrCpy $4 '' |
629 |
StrCpy $5 '' |
630 |
StrCpy $6 '' |
631 |
StrCpy $8 0 |
632 |
StrCpy $R3 '' |
633 |
StrCpy $R4 '' |
634 |
StrCpy $R5 '' |
635 |
|
636 |
FileFunc_GetSize_option: |
637 |
StrCpy $R9 $1 1 |
638 |
StrCpy $1 $1 '' 1 |
639 |
StrCmp $R9 ' ' -2 |
640 |
StrCmp $R9 '' FileFunc_GetSize_sizeset |
641 |
StrCmp $R9 '/' 0 -4 |
642 |
|
643 |
StrCpy $9 -1 |
644 |
IntOp $9 $9 + 1 |
645 |
StrCpy $R9 $1 1 $9 |
646 |
StrCmp $R9 '' +2 |
647 |
StrCmp $R9 '/' 0 -3 |
648 |
StrCpy $8 $1 $9 |
649 |
StrCpy $8 $8 '' 2 |
650 |
StrCpy $R9 $8 '' -1 |
651 |
StrCmp $R9 ' ' 0 +3 |
652 |
StrCpy $8 $8 -1 |
653 |
goto -3 |
654 |
StrCpy $R9 $1 2 |
655 |
StrCpy $1 $1 '' $9 |
656 |
|
657 |
StrCmp $R9 'M=' 0 FileFunc_GetSize_size |
658 |
StrCpy $4 $8 |
659 |
goto FileFunc_GetSize_option |
660 |
|
661 |
FileFunc_GetSize_size: |
662 |
StrCmp $R9 'S=' 0 FileFunc_GetSize_gotosubdir |
663 |
StrCpy $6 $8 |
664 |
goto FileFunc_GetSize_option |
665 |
|
666 |
FileFunc_GetSize_gotosubdir: |
667 |
StrCmp $R9 'G=' 0 FileFunc_GetSize_error |
668 |
StrCpy $7 $8 |
669 |
StrCmp $7 '' +3 |
670 |
StrCmp $7 '1' +2 |
671 |
StrCmp $7 '0' 0 FileFunc_GetSize_error |
672 |
goto FileFunc_GetSize_option |
673 |
|
674 |
FileFunc_GetSize_sizeset: |
675 |
StrCmp $6 '' FileFunc_GetSize_default |
676 |
StrCpy $9 0 |
677 |
StrCpy $R9 $6 1 $9 |
678 |
StrCmp $R9 '' +4 |
679 |
StrCmp $R9 ':' +3 |
680 |
IntOp $9 $9 + 1 |
681 |
goto -4 |
682 |
StrCpy $5 $6 $9 |
683 |
IntOp $9 $9 + 1 |
684 |
StrCpy $1 $6 1 -1 |
685 |
StrCpy $6 $6 -1 $9 |
686 |
StrCmp $5 '' +2 |
687 |
IntOp $5 $5 + 0 |
688 |
StrCmp $6 '' +2 |
689 |
IntOp $6 $6 + 0 |
690 |
|
691 |
StrCmp $1 'B' 0 +4 |
692 |
StrCpy $1 1 |
693 |
StrCpy $2 bytes |
694 |
goto FileFunc_GetSize_default |
695 |
StrCmp $1 'K' 0 +4 |
696 |
StrCpy $1 1024 |
697 |
StrCpy $2 Kb |
698 |
goto FileFunc_GetSize_default |
699 |
StrCmp $1 'M' 0 +4 |
700 |
StrCpy $1 1048576 |
701 |
StrCpy $2 Mb |
702 |
goto FileFunc_GetSize_default |
703 |
StrCmp $1 'G' 0 FileFunc_GetSize_error |
704 |
StrCpy $1 1073741824 |
705 |
StrCpy $2 Gb |
706 |
|
707 |
FileFunc_GetSize_default: |
708 |
StrCmp $4 '' 0 +2 |
709 |
StrCpy $4 '*.*' |
710 |
StrCmp $7 '' 0 +2 |
711 |
StrCpy $7 '1' |
712 |
|
713 |
StrCpy $8 1 |
714 |
Push $0 |
715 |
SetDetailsPrint textonly |
716 |
|
717 |
FileFunc_GetSize_nextdir: |
718 |
IntOp $8 $8 - 1 |
719 |
Pop $R8 |
720 |
FindFirst $0 $R7 '$R8\$4' |
721 |
IfErrors FileFunc_GetSize_show |
722 |
StrCmp $R7 '.' 0 FileFunc_GetSize_dir |
723 |
FindNext $0 $R7 |
724 |
StrCmp $R7 '..' 0 FileFunc_GetSize_dir |
725 |
FindNext $0 $R7 |
726 |
IfErrors 0 FileFunc_GetSize_dir |
727 |
FindClose $0 |
728 |
goto FileFunc_GetSize_show |
729 |
|
730 |
FileFunc_GetSize_dir: |
731 |
IfFileExists '$R8\$R7\*.*' 0 FileFunc_GetSize_file |
732 |
IntOp $R5 $R5 + 1 |
733 |
goto FileFunc_GetSize_findnext |
734 |
|
735 |
FileFunc_GetSize_file: |
736 |
StrCpy $R6 0 |
737 |
StrCmp $5$6 '' 0 +3 |
738 |
IntOp $R4 $R4 + 1 |
739 |
goto FileFunc_GetSize_findnext |
740 |
FileOpen $9 '$R8\$R7' r |
741 |
IfErrors +3 |
742 |
FileSeek $9 0 END $R6 |
743 |
FileClose $9 |
744 |
StrCmp $5 '' +2 |
745 |
IntCmp $R6 $5 0 FileFunc_GetSize_findnext |
746 |
StrCmp $6 '' +2 |
747 |
IntCmp $R6 $6 0 0 FileFunc_GetSize_findnext |
748 |
IntOp $R4 $R4 + 1 |
749 |
System::Int64Op $R3 + $R6 |
750 |
Pop $R3 |
751 |
|
752 |
FileFunc_GetSize_findnext: |
753 |
FindNext $0 $R7 |
754 |
IfErrors 0 FileFunc_GetSize_dir |
755 |
FindClose $0 |
756 |
|
757 |
FileFunc_GetSize_show: |
758 |
StrCmp $5$6 '' FileFunc_GetSize_nosize |
759 |
System::Int64Op $R3 / $1 |
760 |
Pop $9 |
761 |
DetailPrint 'Size:$9 $2 Files:$R4 Folders:$R5' |
762 |
goto FileFunc_GetSize_subdir |
763 |
FileFunc_GetSize_nosize: |
764 |
DetailPrint 'Files:$R4 Folders:$R5' |
765 |
|
766 |
FileFunc_GetSize_subdir: |
767 |
StrCmp $7 0 FileFunc_GetSize_preend |
768 |
FindFirst $0 $R7 '$R8\*.*' |
769 |
StrCmp $R7 '.' 0 FileFunc_GetSize_pushdir |
770 |
FindNext $0 $R7 |
771 |
StrCmp $R7 '..' 0 FileFunc_GetSize_pushdir |
772 |
FindNext $0 $R7 |
773 |
IfErrors 0 FileFunc_GetSize_pushdir |
774 |
FindClose $0 |
775 |
StrCmp $8 0 FileFunc_GetSize_preend FileFunc_GetSize_nextdir |
776 |
|
777 |
FileFunc_GetSize_pushdir: |
778 |
IfFileExists '$R8\$R7\*.*' 0 +3 |
779 |
Push '$R8\$R7' |
780 |
IntOp $8 $8 + 1 |
781 |
FindNext $0 $R7 |
782 |
IfErrors 0 FileFunc_GetSize_pushdir |
783 |
FindClose $0 |
784 |
StrCmp $8 0 FileFunc_GetSize_preend FileFunc_GetSize_nextdir |
785 |
|
786 |
FileFunc_GetSize_preend: |
787 |
StrCmp $R3 '' FileFunc_GetSize_nosizeend |
788 |
System::Int64Op $R3 / $1 |
789 |
Pop $R3 |
790 |
FileFunc_GetSize_nosizeend: |
791 |
StrCpy $2 $R4 |
792 |
StrCpy $1 $R5 |
793 |
StrCpy $0 $R3 |
794 |
goto FileFunc_GetSize_end |
795 |
|
796 |
FileFunc_GetSize_error: |
797 |
SetErrors |
798 |
StrCpy $0 '' |
799 |
StrCpy $1 '' |
800 |
StrCpy $2 '' |
801 |
|
802 |
FileFunc_GetSize_end: |
803 |
SetDetailsPrint both |
804 |
Pop $R9 |
805 |
Pop $R8 |
806 |
Pop $R7 |
807 |
Pop $R6 |
808 |
Pop $R5 |
809 |
Pop $R4 |
810 |
Pop $R3 |
811 |
Pop $9 |
812 |
Pop $8 |
813 |
Pop $7 |
814 |
Pop $6 |
815 |
Pop $5 |
816 |
Pop $4 |
817 |
Pop $3 |
818 |
Exch $2 |
819 |
Exch |
820 |
Exch $1 |
821 |
Exch 2 |
822 |
Exch $0 |
823 |
|
824 |
!verbose pop |
825 |
!macroend |
826 |
|
827 |
!define DriveSpace `!insertmacro DriveSpaceCall` |
828 |
!define un.DriveSpace `!insertmacro DriveSpaceCall` |
829 |
|
830 |
!macro DriveSpace |
831 |
!macroend |
832 |
|
833 |
!macro un.DriveSpace |
834 |
!macroend |
835 |
|
836 |
!macro DriveSpace_ |
837 |
!verbose push |
838 |
!verbose ${_FILEFUNC_VERBOSE} |
839 |
|
840 |
Exch $1 |
841 |
Exch |
842 |
Exch $0 |
843 |
Exch |
844 |
Push $2 |
845 |
Push $3 |
846 |
Push $4 |
847 |
Push $5 |
848 |
Push $6 |
849 |
ClearErrors |
850 |
|
851 |
StrCpy $2 $0 1 -1 |
852 |
StrCmp $2 '\' 0 +3 |
853 |
StrCpy $0 $0 -1 |
854 |
goto -3 |
855 |
IfFileExists '$0\NUL' 0 FileFunc_DriveSpace_error |
856 |
|
857 |
StrCpy $5 '' |
858 |
StrCpy $6 '' |
859 |
|
860 |
FileFunc_DriveSpace_option: |
861 |
StrCpy $2 $1 1 |
862 |
StrCpy $1 $1 '' 1 |
863 |
StrCmp $2 ' ' -2 |
864 |
StrCmp $2 '' FileFunc_DriveSpace_default |
865 |
StrCmp $2 '/' 0 -4 |
866 |
StrCpy $3 -1 |
867 |
IntOp $3 $3 + 1 |
868 |
StrCpy $2 $1 1 $3 |
869 |
StrCmp $2 '' +2 |
870 |
StrCmp $2 '/' 0 -3 |
871 |
StrCpy $4 $1 $3 |
872 |
StrCpy $4 $4 '' 2 |
873 |
StrCpy $2 $4 1 -1 |
874 |
StrCmp $2 ' ' 0 +3 |
875 |
StrCpy $4 $4 -1 |
876 |
goto -3 |
877 |
StrCpy $2 $1 2 |
878 |
StrCpy $1 $1 '' $3 |
879 |
|
880 |
StrCmp $2 'D=' 0 FileFunc_DriveSpace_unit |
881 |
StrCpy $5 $4 |
882 |
StrCmp $5 '' +4 |
883 |
StrCmp $5 'T' +3 |
884 |
StrCmp $5 'O' +2 |
885 |
StrCmp $5 'F' 0 FileFunc_DriveSpace_error |
886 |
goto FileFunc_DriveSpace_option |
887 |
|
888 |
FileFunc_DriveSpace_unit: |
889 |
StrCmp $2 'S=' 0 FileFunc_DriveSpace_error |
890 |
StrCpy $6 $4 |
891 |
goto FileFunc_DriveSpace_option |
892 |
|
893 |
FileFunc_DriveSpace_default: |
894 |
StrCmp $5 '' 0 +2 |
895 |
StrCpy $5 'T' |
896 |
StrCmp $6 '' 0 +3 |
897 |
StrCpy $6 '1' |
898 |
goto FileFunc_DriveSpace_getspace |
899 |
|
900 |
StrCmp $6 'B' 0 +3 |
901 |
StrCpy $6 1 |
902 |
goto FileFunc_DriveSpace_getspace |
903 |
StrCmp $6 'K' 0 +3 |
904 |
StrCpy $6 1024 |
905 |
goto FileFunc_DriveSpace_getspace |
906 |
StrCmp $6 'M' 0 +3 |
907 |
StrCpy $6 1048576 |
908 |
goto FileFunc_DriveSpace_getspace |
909 |
StrCmp $6 'G' 0 FileFunc_DriveSpace_error |
910 |
StrCpy $6 1073741824 |
911 |
|
912 |
FileFunc_DriveSpace_getspace: |
913 |
System::Call 'kernel32::GetDiskFreeSpaceExA(t, *l, *l, *l)i(r0,.r2,.r3,.)' |
914 |
|
915 |
StrCmp $5 T 0 +3 |
916 |
StrCpy $0 $3 |
917 |
goto FileFunc_DriveSpace_getsize |
918 |
StrCmp $5 O 0 +4 |
919 |
System::Int64Op $3 - $2 |
920 |
Pop $0 |
921 |
goto FileFunc_DriveSpace_getsize |
922 |
StrCmp $5 F 0 +2 |
923 |
StrCpy $0 $2 |
924 |
|
925 |
FileFunc_DriveSpace_getsize: |
926 |
System::Int64Op $0 / $6 |
927 |
Pop $0 |
928 |
goto FileFunc_DriveSpace_end |
929 |
|
930 |
FileFunc_DriveSpace_error: |
931 |
SetErrors |
932 |
StrCpy $0 '' |
933 |
|
934 |
FileFunc_DriveSpace_end: |
935 |
Pop $6 |
936 |
Pop $5 |
937 |
Pop $4 |
938 |
Pop $3 |
939 |
Pop $2 |
940 |
Pop $1 |
941 |
Exch $0 |
942 |
|
943 |
!verbose pop |
944 |
!macroend |
945 |
|
946 |
!define GetDrives `!insertmacro GetDrivesCall` |
947 |
!define un.GetDrives `!insertmacro GetDrivesCall` |
948 |
|
949 |
!macro GetDrives |
950 |
!macroend |
951 |
|
952 |
!macro un.GetDrives |
953 |
!macroend |
954 |
|
955 |
!macro GetDrives_ |
956 |
!verbose push |
957 |
!verbose ${_FILEFUNC_VERBOSE} |
958 |
|
959 |
Exch $1 |
960 |
Exch |
961 |
Exch $0 |
962 |
Exch |
963 |
Push $2 |
964 |
Push $3 |
965 |
Push $4 |
966 |
Push $5 |
967 |
Push $6 |
968 |
Push $8 |
969 |
Push $9 |
970 |
|
971 |
System::Alloc 1024 |
972 |
Pop $2 |
973 |
System::Call 'kernel32::GetLogicalDriveStringsA(i,i) i(1024, r2)' |
974 |
|
975 |
StrCmp $0 ALL FileFunc_GetDrives_drivestring |
976 |
StrCmp $0 '' 0 FileFunc_GetDrives_typeset |
977 |
StrCpy $0 ALL |
978 |
goto FileFunc_GetDrives_drivestring |
979 |
|
980 |
FileFunc_GetDrives_typeset: |
981 |
StrCpy $6 -1 |
982 |
IntOp $6 $6 + 1 |
983 |
StrCpy $8 $0 1 $6 |
984 |
StrCmp $8$0 '' FileFunc_GetDrives_enumex |
985 |
StrCmp $8 '' +2 |
986 |
StrCmp $8 '+' 0 -4 |
987 |
StrCpy $8 $0 $6 |
988 |
IntOp $6 $6 + 1 |
989 |
StrCpy $0 $0 '' $6 |
990 |
|
991 |
StrCmp $8 'FDD' 0 +3 |
992 |
StrCpy $6 2 |
993 |
goto FileFunc_GetDrives_drivestring |
994 |
StrCmp $8 'HDD' 0 +3 |
995 |
StrCpy $6 3 |
996 |
goto FileFunc_GetDrives_drivestring |
997 |
StrCmp $8 'NET' 0 +3 |
998 |
StrCpy $6 4 |
999 |
goto FileFunc_GetDrives_drivestring |
1000 |
StrCmp $8 'CDROM' 0 +3 |
1001 |
StrCpy $6 5 |
1002 |
goto FileFunc_GetDrives_drivestring |
1003 |
StrCmp $8 'RAM' 0 FileFunc_GetDrives_typeset |
1004 |
StrCpy $6 6 |
1005 |
|
1006 |
FileFunc_GetDrives_drivestring: |
1007 |
StrCpy $3 $2 |
1008 |
|
1009 |
FileFunc_GetDrives_enumok: |
1010 |
System::Call 'kernel32::lstrlenA(t) i(i r3) .r4' |
1011 |
StrCmp $4$0 '0ALL' FileFunc_GetDrives_enumex |
1012 |
StrCmp $4 0 FileFunc_GetDrives_typeset |
1013 |
System::Call 'kernel32::GetDriveTypeA(t) i(i r3) .r5' |
1014 |
|
1015 |
StrCmp $0 ALL +2 |
1016 |
StrCmp $5 $6 FileFunc_GetDrives_letter FileFunc_GetDrives_enumnext |
1017 |
StrCmp $5 2 0 +3 |
1018 |
StrCpy $8 FDD |
1019 |
goto FileFunc_GetDrives_letter |
1020 |
StrCmp $5 3 0 +3 |
1021 |
StrCpy $8 HDD |
1022 |
goto FileFunc_GetDrives_letter |
1023 |
StrCmp $5 4 0 +3 |
1024 |
StrCpy $8 NET |
1025 |
goto FileFunc_GetDrives_letter |
1026 |
StrCmp $5 5 0 +3 |
1027 |
StrCpy $8 CDROM |
1028 |
goto FileFunc_GetDrives_letter |
1029 |
StrCmp $5 6 0 FileFunc_GetDrives_enumex |
1030 |
StrCpy $8 RAM |
1031 |
|
1032 |
FileFunc_GetDrives_letter: |
1033 |
System::Call '*$3(&t1024 .r9)' |
1034 |
|
1035 |
Push $0 |
1036 |
Push $1 |
1037 |
Push $2 |
1038 |
Push $3 |
1039 |
Push $4 |
1040 |
Push $5 |
1041 |
Push $6 |
1042 |
Push $8 |
1043 |
Call $1 |
1044 |
Pop $9 |
1045 |
Pop $8 |
1046 |
Pop $6 |
1047 |
Pop $5 |
1048 |
Pop $4 |
1049 |
Pop $3 |
1050 |
Pop $2 |
1051 |
Pop $1 |
1052 |
Pop $0 |
1053 |
StrCmp $9 'StopGetDrives' FileFunc_GetDrives_enumex |
1054 |
|
1055 |
FileFunc_GetDrives_enumnext: |
1056 |
IntOp $3 $3 + $4 |
1057 |
IntOp $3 $3 + 1 |
1058 |
goto FileFunc_GetDrives_enumok |
1059 |
|
1060 |
FileFunc_GetDrives_enumex: |
1061 |
System::Free $2 |
1062 |
|
1063 |
Pop $9 |
1064 |
Pop $8 |
1065 |
Pop $6 |
1066 |
Pop $5 |
1067 |
Pop $4 |
1068 |
Pop $3 |
1069 |
Pop $2 |
1070 |
Pop $1 |
1071 |
Pop $0 |
1072 |
|
1073 |
!verbose pop |
1074 |
!macroend |
1075 |
|
1076 |
!define GetTime `!insertmacro GetTimeCall` |
1077 |
!define un.GetTime `!insertmacro GetTimeCall` |
1078 |
|
1079 |
!macro GetTime |
1080 |
!macroend |
1081 |
|
1082 |
!macro un.GetTime |
1083 |
!macroend |
1084 |
|
1085 |
!macro GetTime_ |
1086 |
!verbose push |
1087 |
!verbose ${_FILEFUNC_VERBOSE} |
1088 |
|
1089 |
Exch $1 |
1090 |
Exch |
1091 |
Exch $0 |
1092 |
Exch |
1093 |
Push $2 |
1094 |
Push $3 |
1095 |
Push $4 |
1096 |
Push $5 |
1097 |
Push $6 |
1098 |
Push $7 |
1099 |
ClearErrors |
1100 |
|
1101 |
StrCmp $1 'L' FileFunc_GetTime_gettime |
1102 |
StrCmp $1 'A' FileFunc_GetTime_getfile |
1103 |
StrCmp $1 'C' FileFunc_GetTime_getfile |
1104 |
StrCmp $1 'M' FileFunc_GetTime_getfile |
1105 |
StrCmp $1 'LS' FileFunc_GetTime_gettime |
1106 |
StrCmp $1 'AS' FileFunc_GetTime_getfile |
1107 |
StrCmp $1 'CS' FileFunc_GetTime_getfile |
1108 |
StrCmp $1 'MS' FileFunc_GetTime_getfile |
1109 |
goto FileFunc_GetTime_error |
1110 |
|
1111 |
FileFunc_GetTime_getfile: |
1112 |
IfFileExists $0 0 FileFunc_GetTime_error |
1113 |
System::Call '*(i,l,l,l,i,i,i,i,&t260,&t14) i .r6' |
1114 |
System::Call 'kernel32::FindFirstFileA(t,i)i(r0,r6) .r2' |
1115 |
System::Call 'kernel32::FindClose(i)i(r2)' |
1116 |
|
1117 |
FileFunc_GetTime_gettime: |
1118 |
System::Call '*(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2) i .r7' |
1119 |
StrCmp $1 'L' 0 FileFunc_GetTime_systemtime |
1120 |
System::Call 'kernel32::GetLocalTime(i)i(r7)' |
1121 |
goto FileFunc_GetTime_convert |
1122 |
FileFunc_GetTime_systemtime: |
1123 |
StrCmp $1 'LS' 0 FileFunc_GetTime_filetime |
1124 |
System::Call 'kernel32::GetSystemTime(i)i(r7)' |
1125 |
goto FileFunc_GetTime_convert |
1126 |
|
1127 |
FileFunc_GetTime_filetime: |
1128 |
System::Call '*$6(i,l,l,l,i,i,i,i,&t260,&t14)i(,.r4,.r3,.r2)' |
1129 |
System::Free $6 |
1130 |
StrCmp $1 'A' 0 +3 |
1131 |
StrCpy $2 $3 |
1132 |
goto FileFunc_GetTime_tolocal |
1133 |
StrCmp $1 'C' 0 +3 |
1134 |
StrCpy $2 $4 |
1135 |
goto FileFunc_GetTime_tolocal |
1136 |
StrCmp $1 'M' FileFunc_GetTime_tolocal |
1137 |
|
1138 |
StrCmp $1 'AS' FileFunc_GetTime_tosystem |
1139 |
StrCmp $1 'CS' 0 +3 |
1140 |
StrCpy $3 $4 |
1141 |
goto FileFunc_GetTime_tosystem |
1142 |
StrCmp $1 'MS' 0 +3 |
1143 |
StrCpy $3 $2 |
1144 |
goto FileFunc_GetTime_tosystem |
1145 |
|
1146 |
FileFunc_GetTime_tolocal: |
1147 |
System::Call 'kernel32::FileTimeToLocalFileTime(*l,*l)i(r2,.r3)' |
1148 |
FileFunc_GetTime_tosystem: |
1149 |
System::Call 'kernel32::FileTimeToSystemTime(*l,i)i(r3,r7)' |
1150 |
|
1151 |
FileFunc_GetTime_convert: |
1152 |
System::Call '*$7(&i2,&i2,&i2,&i2,&i2,&i2,&i2,&i2)i(.r5,.r6,.r4,.r0,.r3,.r2,.r1,)' |
1153 |
System::Free $7 |
1154 |
|
1155 |
IntCmp $0 9 0 0 +2 |
1156 |
StrCpy $0 '0$0' |
1157 |
IntCmp $1 9 0 0 +2 |
1158 |
StrCpy $1 '0$1' |
1159 |
IntCmp $2 9 0 0 +2 |
1160 |
StrCpy $2 '0$2' |
1161 |
IntCmp $6 9 0 0 +2 |
1162 |
StrCpy $6 '0$6' |
1163 |
|
1164 |
StrCmp $4 0 0 +3 |
1165 |
StrCpy $4 Sunday |
1166 |
goto FileFunc_GetTime_end |
1167 |
StrCmp $4 1 0 +3 |
1168 |
StrCpy $4 Monday |
1169 |
goto FileFunc_GetTime_end |
1170 |
StrCmp $4 2 0 +3 |
1171 |
StrCpy $4 Tuesday |
1172 |
goto FileFunc_GetTime_end |
1173 |
StrCmp $4 3 0 +3 |
1174 |
StrCpy $4 Wednesday |
1175 |
goto FileFunc_GetTime_end |
1176 |
StrCmp $4 4 0 +3 |
1177 |
StrCpy $4 Thursday |
1178 |
goto FileFunc_GetTime_end |
1179 |
StrCmp $4 5 0 +3 |
1180 |
StrCpy $4 Friday |
1181 |
goto FileFunc_GetTime_end |
1182 |
StrCmp $4 6 0 FileFunc_GetTime_error |
1183 |
StrCpy $4 Saturday |
1184 |
goto FileFunc_GetTime_end |
1185 |
|
1186 |
FileFunc_GetTime_error: |
1187 |
SetErrors |
1188 |
StrCpy $0 '' |
1189 |
StrCpy $1 '' |
1190 |
StrCpy $2 '' |
1191 |
StrCpy $3 '' |
1192 |
StrCpy $4 '' |
1193 |
StrCpy $5 '' |
1194 |
StrCpy $6 '' |
1195 |
|
1196 |
FileFunc_GetTime_end: |
1197 |
Pop $7 |
1198 |
Exch $6 |
1199 |
Exch |
1200 |
Exch $5 |
1201 |
Exch 2 |
1202 |
Exch $4 |
1203 |
Exch 3 |
1204 |
Exch $3 |
1205 |
Exch 4 |
1206 |
Exch $2 |
1207 |
Exch 5 |
1208 |
Exch $1 |
1209 |
Exch 6 |
1210 |
Exch $0 |
1211 |
|
1212 |
!verbose pop |
1213 |
!macroend |
1214 |
|
1215 |
!define GetFileAttributes `!insertmacro GetFileAttributesCall` |
1216 |
!define un.GetFileAttributes `!insertmacro GetFileAttributesCall` |
1217 |
|
1218 |
!macro GetFileAttributes |
1219 |
!macroend |
1220 |
|
1221 |
!macro un.GetFileAttributes |
1222 |
!macroend |
1223 |
|
1224 |
!macro GetFileAttributes_ |
1225 |
!verbose push |
1226 |
!verbose ${_FILEFUNC_VERBOSE} |
1227 |
|
1228 |
Exch $1 |
1229 |
Exch |
1230 |
Exch $0 |
1231 |
Exch |
1232 |
Push $2 |
1233 |
Push $3 |
1234 |
Push $4 |
1235 |
Push $5 |
1236 |
|
1237 |
System::Call 'kernel32::GetFileAttributes(t r0)i .r2' |
1238 |
StrCmp $2 -1 FileFunc_GetFileAttributes_error |
1239 |
StrCpy $3 '' |
1240 |
|
1241 |
IntOp $0 $2 & 0x4000 |
1242 |
IntCmp $0 0 +2 |
1243 |
StrCpy $3 'ENCRYPTED|' |
1244 |
|
1245 |
IntOp $0 $2 & 0x2000 |
1246 |
IntCmp $0 0 +2 |
1247 |
StrCpy $3 'NOT_CONTENT_INDEXED|$3' |
1248 |
|
1249 |
IntOp $0 $2 & 0x1000 |
1250 |
IntCmp $0 0 +2 |
1251 |
StrCpy $3 'OFFLINE|$3' |
1252 |
|
1253 |
IntOp $0 $2 & 0x0800 |
1254 |
IntCmp $0 0 +2 |
1255 |
StrCpy $3 'COMPRESSED|$3' |
1256 |
|
1257 |
IntOp $0 $2 & 0x0400 |
1258 |
IntCmp $0 0 +2 |
1259 |
StrCpy $3 'REPARSE_POINT|$3' |
1260 |
|
1261 |
IntOp $0 $2 & 0x0200 |
1262 |
IntCmp $0 0 +2 |
1263 |
StrCpy $3 'SPARSE_FILE|$3' |
1264 |
|
1265 |
IntOp $0 $2 & 0x0100 |
1266 |
IntCmp $0 0 +2 |
1267 |
StrCpy $3 'TEMPORARY|$3' |
1268 |
|
1269 |
IntOp $0 $2 & 0x0080 |
1270 |
IntCmp $0 0 +2 |
1271 |
StrCpy $3 'NORMAL|$3' |
1272 |
|
1273 |
IntOp $0 $2 & 0x0040 |
1274 |
IntCmp $0 0 +2 |
1275 |
StrCpy $3 'DEVICE|$3' |
1276 |
|
1277 |
IntOp $0 $2 & 0x0020 |
1278 |
IntCmp $0 0 +2 |
1279 |
StrCpy $3 'ARCHIVE|$3' |
1280 |
|
1281 |
IntOp $0 $2 & 0x0010 |
1282 |
IntCmp $0 0 +2 |
1283 |
StrCpy $3 'DIRECTORY|$3' |
1284 |
|
1285 |
IntOp $0 $2 & 0x0004 |
1286 |
IntCmp $0 0 +2 |
1287 |
StrCpy $3 'SYSTEM|$3' |
1288 |
|
1289 |
IntOp $0 $2 & 0x0002 |
1290 |
IntCmp $0 0 +2 |
1291 |
StrCpy $3 'HIDDEN|$3' |
1292 |
|
1293 |
IntOp $0 $2 & 0x0001 |
1294 |
IntCmp $0 0 +2 |
1295 |
StrCpy $3 'READONLY|$3' |
1296 |
|
1297 |
StrCpy $0 $3 -1 |
1298 |
StrCmp $1 '' FileFunc_GetFileAttributes_end |
1299 |
StrCmp $1 'ALL' FileFunc_GetFileAttributes_end |
1300 |
|
1301 |
FileFunc_GetFileAttributes_attrcmp: |
1302 |
StrCpy $5 0 |
1303 |
IntOp $5 $5 + 1 |
1304 |
StrCpy $4 $1 1 $5 |
1305 |
StrCmp $4 '' +2 |
1306 |
StrCmp $4 '|' 0 -3 |
1307 |
StrCpy $2 $1 $5 |
1308 |
IntOp $5 $5 + 1 |
1309 |
StrCpy $1 $1 '' $5 |
1310 |
StrLen $3 $2 |
1311 |
StrCpy $5 -1 |
1312 |
IntOp $5 $5 + 1 |
1313 |
StrCpy $4 $0 $3 $5 |
1314 |
StrCmp $4 '' FileFunc_GetFileAttributes_notfound |
1315 |
StrCmp $4 $2 0 -3 |
1316 |
StrCmp $1 '' 0 FileFunc_GetFileAttributes_attrcmp |
1317 |
StrCpy $0 1 |
1318 |
goto FileFunc_GetFileAttributes_end |
1319 |
|
1320 |
FileFunc_GetFileAttributes_notfound: |
1321 |
StrCpy $0 0 |
1322 |
goto FileFunc_GetFileAttributes_end |
1323 |
|
1324 |
FileFunc_GetFileAttributes_error: |
1325 |
SetErrors |
1326 |
StrCpy $0 '' |
1327 |
|
1328 |
FileFunc_GetFileAttributes_end: |
1329 |
Pop $5 |
1330 |
Pop $4 |
1331 |
Pop $3 |
1332 |
Pop $2 |
1333 |
Pop $1 |
1334 |
Exch $0 |
1335 |
|
1336 |
!verbose pop |
1337 |
!macroend |
1338 |
|
1339 |
!define GetFileVersion `!insertmacro GetFileVersionCall` |
1340 |
!define un.GetFileVersion `!insertmacro GetFileVersionCall` |
1341 |
|
1342 |
!macro GetFileVersion |
1343 |
!macroend |
1344 |
|
1345 |
!macro un.GetFileVersion |
1346 |
!macroend |
1347 |
|
1348 |
!macro GetFileVersion_ |
1349 |
!verbose push |
1350 |
!verbose ${_FILEFUNC_VERBOSE} |
1351 |
|
1352 |
Exch $0 |
1353 |
Push $1 |
1354 |
Push $2 |
1355 |
Push $3 |
1356 |
Push $4 |
1357 |
Push $5 |
1358 |
Push $6 |
1359 |
ClearErrors |
1360 |
|
1361 |
GetDllVersion '$0' $1 $2 |
1362 |
IfErrors FileFunc_GetFileVersion_error |
1363 |
IntOp $3 $1 >> 16 |
1364 |
IntOp $3 $3 & 0x0000FFFF |
1365 |
IntOp $4 $1 & 0x0000FFFF |
1366 |
IntOp $5 $2 >> 16 |
1367 |
IntOp $5 $5 & 0x0000FFFF |
1368 |
IntOp $6 $2 & 0x0000FFFF |
1369 |
StrCpy $0 '$3.$4.$5.$6' |
1370 |
goto FileFunc_GetFileVersion_end |
1371 |
|
1372 |
FileFunc_GetFileVersion_error: |
1373 |
SetErrors |
1374 |
StrCpy $0 '' |
1375 |
|
1376 |
FileFunc_GetFileVersion_end: |
1377 |
Pop $6 |
1378 |
Pop $5 |
1379 |
Pop $4 |
1380 |
Pop $3 |
1381 |
Pop $2 |
1382 |
Pop $1 |
1383 |
Exch $0 |
1384 |
|
1385 |
!verbose pop |
1386 |
!macroend |
1387 |
|
1388 |
!define GetExeName `!insertmacro GetExeNameCall` |
1389 |
!define un.GetExeName `!insertmacro GetExeNameCall` |
1390 |
|
1391 |
!macro GetExeName |
1392 |
!macroend |
1393 |
|
1394 |
!macro un.GetExeName |
1395 |
!macroend |
1396 |
|
1397 |
!macro GetExeName_ |
1398 |
!verbose push |
1399 |
!verbose ${_FILEFUNC_VERBOSE} |
1400 |
|
1401 |
Push $0 |
1402 |
Push $1 |
1403 |
Push $2 |
1404 |
System::Call 'kernel32::GetModuleFileNameA(i 0, t .r0, i 1024)' |
1405 |
System::Call 'kernel32::GetLongPathNameA(t r0, t .r1, i 1024)i .r2' |
1406 |
StrCmp $2 error +2 |
1407 |
StrCpy $0 $1 |
1408 |
Pop $2 |
1409 |
Pop $1 |
1410 |
Exch $0 |
1411 |
|
1412 |
!verbose pop |
1413 |
!macroend |
1414 |
|
1415 |
!define GetExePath `!insertmacro GetExePathCall` |
1416 |
!define un.GetExePath `!insertmacro GetExePathCall` |
1417 |
|
1418 |
!macro GetExePath |
1419 |
!macroend |
1420 |
|
1421 |
!macro un.GetExePath |
1422 |
!macroend |
1423 |
|
1424 |
!macro GetExePath_ |
1425 |
!verbose push |
1426 |
!verbose ${_FILEFUNC_VERBOSE} |
1427 |
|
1428 |
Push $0 |
1429 |
Push $1 |
1430 |
Push $2 |
1431 |
StrCpy $0 $EXEDIR |
1432 |
System::Call 'kernel32::GetLongPathNameA(t r0, t .r1, i 1024)i .r2' |
1433 |
StrCmp $2 error +2 |
1434 |
StrCpy $0 $1 |
1435 |
Pop $2 |
1436 |
Pop $1 |
1437 |
Exch $0 |
1438 |
|
1439 |
!verbose pop |
1440 |
!macroend |
1441 |
|
1442 |
!define GetParameters `!insertmacro GetParametersCall` |
1443 |
!define un.GetParameters `!insertmacro GetParametersCall` |
1444 |
|
1445 |
!macro GetParameters |
1446 |
!macroend |
1447 |
|
1448 |
!macro un.GetParameters |
1449 |
!macroend |
1450 |
|
1451 |
!macro GetParameters_ |
1452 |
!verbose push |
1453 |
!verbose ${_FILEFUNC_VERBOSE} |
1454 |
|
1455 |
;cmdline-check |
1456 |
StrCmp $CMDLINE "" 0 +3 |
1457 |
Push "" |
1458 |
Return |
1459 |
|
1460 |
;vars |
1461 |
Push $0 ;tmp |
1462 |
Push $1 ;length |
1463 |
Push $2 ;parameter offset |
1464 |
Push $3 ;separator |
1465 |
|
1466 |
;length/offset |
1467 |
StrLen $1 $CMDLINE |
1468 |
StrCpy $2 2 ;start with third character |
1469 |
|
1470 |
;separator |
1471 |
StrCpy $3 $CMDLINE 1 ;first character |
1472 |
StrCmp $3 '"' +2 |
1473 |
StrCpy $3 ' ' |
1474 |
|
1475 |
FileFunc_GetParameters_token: ;finding second separator |
1476 |
IntCmp $2 $1 FileFunc_GetParameters_strip 0 FileFunc_GetParameters_strip |
1477 |
StrCpy $0 $CMDLINE 1 $2 |
1478 |
IntOp $2 $2 + 1 |
1479 |
StrCmp $3 $0 0 FileFunc_GetParameters_token |
1480 |
|
1481 |
FileFunc_GetParameters_strip: ;strip white space |
1482 |
IntCmp $2 $1 FileFunc_GetParameters_copy 0 FileFunc_GetParameters_copy |
1483 |
StrCpy $0 $CMDLINE 1 $2 |
1484 |
StrCmp $0 ' ' 0 FileFunc_GetParameters_copy |
1485 |
IntOp $2 $2 + 1 |
1486 |
Goto FileFunc_GetParameters_strip |
1487 |
|
1488 |
FileFunc_GetParameters_copy: |
1489 |
StrCpy $0 $CMDLINE "" $2 |
1490 |
|
1491 |
;strip white spaces from end |
1492 |
FileFunc_GetParameters_rstrip: |
1493 |
StrCpy $1 $0 1 -1 |
1494 |
StrCmp $1 ' ' 0 FileFunc_GetParameters_done |
1495 |
StrCpy $0 $0 -1 |
1496 |
Goto FileFunc_GetParameters_rstrip |
1497 |
|
1498 |
FileFunc_GetParameters_done: |
1499 |
Pop $3 |
1500 |
Pop $2 |
1501 |
Pop $1 |
1502 |
Exch $0 |
1503 |
|
1504 |
!verbose pop |
1505 |
!macroend |
1506 |
|
1507 |
!macro GetOptionsBody _FILEFUNC_S |
1508 |
|
1509 |
Exch $1 |
1510 |
Exch |
1511 |
Exch $0 |
1512 |
Exch |
1513 |
Push $2 |
1514 |
Push $3 |
1515 |
Push $4 |
1516 |
Push $5 |
1517 |
Push $6 |
1518 |
Push $7 |
1519 |
ClearErrors |
1520 |
|
1521 |
StrCpy $2 $1 '' 1 |
1522 |
StrCpy $1 $1 1 |
1523 |
StrLen $3 $2 |
1524 |
StrCpy $7 0 |
1525 |
|
1526 |
FileFunc_GetOptions${_FILEFUNC_S}_begin: |
1527 |
StrCpy $4 -1 |
1528 |
StrCpy $6 '' |
1529 |
|
1530 |
FileFunc_GetOptions${_FILEFUNC_S}_quote: |
1531 |
IntOp $4 $4 + 1 |
1532 |
StrCpy $5 $0 1 $4 |
1533 |
StrCmp${_FILEFUNC_S} $5$7 '0' FileFunc_GetOptions${_FILEFUNC_S}_notfound |
1534 |
StrCmp${_FILEFUNC_S} $5 '' FileFunc_GetOptions${_FILEFUNC_S}_trimright |
1535 |
StrCmp${_FILEFUNC_S} $5 '"' 0 +7 |
1536 |
StrCmp${_FILEFUNC_S} $6 '' 0 +3 |
1537 |
StrCpy $6 '"' |
1538 |
goto FileFunc_GetOptions${_FILEFUNC_S}_quote |
1539 |
StrCmp${_FILEFUNC_S} $6 '"' 0 +3 |
1540 |
StrCpy $6 '' |
1541 |
goto FileFunc_GetOptions${_FILEFUNC_S}_quote |
1542 |
StrCmp${_FILEFUNC_S} $5 `'` 0 +7 |
1543 |
StrCmp${_FILEFUNC_S} $6 `` 0 +3 |
1544 |
StrCpy $6 `'` |
1545 |
goto FileFunc_GetOptions${_FILEFUNC_S}_quote |
1546 |
StrCmp${_FILEFUNC_S} $6 `'` 0 +3 |
1547 |
StrCpy $6 `` |
1548 |
goto FileFunc_GetOptions${_FILEFUNC_S}_quote |
1549 |
StrCmp${_FILEFUNC_S} $5 '`' 0 +7 |
1550 |
StrCmp${_FILEFUNC_S} $6 '' 0 +3 |
1551 |
StrCpy $6 '`' |
1552 |
goto FileFunc_GetOptions${_FILEFUNC_S}_quote |
1553 |
StrCmp${_FILEFUNC_S} $6 '`' 0 +3 |
1554 |
StrCpy $6 '' |
1555 |
goto FileFunc_GetOptions${_FILEFUNC_S}_quote |
1556 |
StrCmp${_FILEFUNC_S} $6 '"' FileFunc_GetOptions${_FILEFUNC_S}_quote |
1557 |
StrCmp${_FILEFUNC_S} $6 `'` FileFunc_GetOptions${_FILEFUNC_S}_quote |
1558 |
StrCmp${_FILEFUNC_S} $6 '`' FileFunc_GetOptions${_FILEFUNC_S}_quote |
1559 |
StrCmp${_FILEFUNC_S} $5 $1 0 FileFunc_GetOptions${_FILEFUNC_S}_quote |
1560 |
StrCmp${_FILEFUNC_S} $7 0 FileFunc_GetOptions${_FILEFUNC_S}_trimleft FileFunc_GetOptions${_FILEFUNC_S}_trimright |
1561 |
|
1562 |
FileFunc_GetOptions${_FILEFUNC_S}_trimleft: |
1563 |
IntOp $4 $4 + 1 |
1564 |
StrCpy $5 $0 $3 $4 |
1565 |
StrCmp${_FILEFUNC_S} $5 '' FileFunc_GetOptions${_FILEFUNC_S}_notfound |
1566 |
StrCmp${_FILEFUNC_S} $5 $2 0 FileFunc_GetOptions${_FILEFUNC_S}_quote |
1567 |
IntOp $4 $4 + $3 |
1568 |
StrCpy $0 $0 '' $4 |
1569 |
StrCpy $4 $0 1 |
1570 |
StrCmp${_FILEFUNC_S} $4 ' ' 0 +3 |
1571 |
StrCpy $0 $0 '' 1 |
1572 |
goto -3 |
1573 |
StrCpy $7 1 |
1574 |
goto FileFunc_GetOptions${_FILEFUNC_S}_begin |
1575 |
|
1576 |
FileFunc_GetOptions${_FILEFUNC_S}_trimright: |
1577 |
StrCpy $0 $0 $4 |
1578 |
StrCpy $4 $0 1 -1 |
1579 |
StrCmp${_FILEFUNC_S} $4 ' ' 0 +3 |
1580 |
StrCpy $0 $0 -1 |
1581 |
goto -3 |
1582 |
StrCpy $3 $0 1 |
1583 |
StrCpy $4 $0 1 -1 |
1584 |
StrCmp${_FILEFUNC_S} $3 $4 0 FileFunc_GetOptions${_FILEFUNC_S}_end |
1585 |
StrCmp${_FILEFUNC_S} $3 '"' +3 |
1586 |
StrCmp${_FILEFUNC_S} $3 `'` +2 |
1587 |
StrCmp${_FILEFUNC_S} $3 '`' 0 FileFunc_GetOptions${_FILEFUNC_S}_end |
1588 |
StrCpy $0 $0 -1 1 |
1589 |
goto FileFunc_GetOptions${_FILEFUNC_S}_end |
1590 |
|
1591 |
FileFunc_GetOptions${_FILEFUNC_S}_notfound: |
1592 |
SetErrors |
1593 |
StrCpy $0 '' |
1594 |
|
1595 |
FileFunc_GetOptions${_FILEFUNC_S}_end: |
1596 |
Pop $7 |
1597 |
Pop $6 |
1598 |
Pop $5 |
1599 |
Pop $4 |
1600 |
Pop $3 |
1601 |
Pop $2 |
1602 |
Pop $1 |
1603 |
Exch $0 |
1604 |
|
1605 |
!macroend |
1606 |
|
1607 |
!define GetOptions `!insertmacro GetOptionsCall` |
1608 |
!define un.GetOptions `!insertmacro GetOptionsCall` |
1609 |
|
1610 |
!macro GetOptions |
1611 |
!macroend |
1612 |
|
1613 |
!macro un.GetOptions |
1614 |
!macroend |
1615 |
|
1616 |
!macro GetOptions_ |
1617 |
!verbose push |
1618 |
!verbose ${_FILEFUNC_VERBOSE} |
1619 |
|
1620 |
!insertmacro GetOptionsBody '' |
1621 |
|
1622 |
!verbose pop |
1623 |
!macroend |
1624 |
|
1625 |
!define GetOptionsS `!insertmacro GetOptionsSCall` |
1626 |
!define un.GetOptionsS `!insertmacro GetOptionsSCall` |
1627 |
|
1628 |
!macro GetOptionsS |
1629 |
!macroend |
1630 |
|
1631 |
!macro un.GetOptionsS |
1632 |
!macroend |
1633 |
|
1634 |
!macro GetOptionsS_ |
1635 |
!verbose push |
1636 |
!verbose ${_FILEFUNC_VERBOSE} |
1637 |
|
1638 |
!insertmacro GetOptionsBody 'S' |
1639 |
|
1640 |
!verbose pop |
1641 |
!macroend |
1642 |
|
1643 |
!define GetRoot `!insertmacro GetRootCall` |
1644 |
!define un.GetRoot `!insertmacro GetRootCall` |
1645 |
|
1646 |
!macro GetRoot |
1647 |
!macroend |
1648 |
|
1649 |
!macro un.GetRoot |
1650 |
!macroend |
1651 |
|
1652 |
!macro GetRoot_ |
1653 |
!verbose push |
1654 |
!verbose ${_FILEFUNC_VERBOSE} |
1655 |
|
1656 |
Exch $0 |
1657 |
Push $1 |
1658 |
Push $2 |
1659 |
Push $3 |
1660 |
|
1661 |
StrCpy $1 $0 2 |
1662 |
StrCmp $1 '\\' FileFunc_GetRoot_UNC |
1663 |
StrCpy $2 $1 1 1 |
1664 |
StrCmp $2 ':' 0 FileFunc_GetRoot_empty |
1665 |
StrCpy $0 $1 |
1666 |
goto FileFunc_GetRoot_end |
1667 |
|
1668 |
FileFunc_GetRoot_UNC: |
1669 |
StrCpy $2 1 |
1670 |
StrCpy $3 '' |
1671 |
|
1672 |
FileFunc_GetRoot_loop: |
1673 |
IntOp $2 $2 + 1 |
1674 |
StrCpy $1 $0 1 $2 |
1675 |
StrCmp $1$3 '' FileFunc_GetRoot_empty |
1676 |
StrCmp $1 '' +5 |
1677 |
StrCmp $1 '\' 0 FileFunc_GetRoot_loop |
1678 |
StrCmp $3 '1' +3 |
1679 |
StrCpy $3 '1' |
1680 |
goto FileFunc_GetRoot_loop |
1681 |
StrCpy $0 $0 $2 |
1682 |
StrCpy $2 $0 1 -1 |
1683 |
StrCmp $2 '\' 0 FileFunc_GetRoot_end |
1684 |
|
1685 |
FileFunc_GetRoot_empty: |
1686 |
StrCpy $0 '' |
1687 |
|
1688 |
FileFunc_GetRoot_end: |
1689 |
Pop $3 |
1690 |
Pop $2 |
1691 |
Pop $1 |
1692 |
Exch $0 |
1693 |
|
1694 |
!verbose pop |
1695 |
!macroend |
1696 |
|
1697 |
!define GetParent `!insertmacro GetParentCall` |
1698 |
!define un.GetParent `!insertmacro GetParentCall` |
1699 |
|
1700 |
!macro GetParent |
1701 |
!macroend |
1702 |
|
1703 |
!macro un.GetParent |
1704 |
!macroend |
1705 |
|
1706 |
!macro GetParent_ |
1707 |
!verbose push |
1708 |
!verbose ${_FILEFUNC_VERBOSE} |
1709 |
|
1710 |
Exch $0 |
1711 |
Push $1 |
1712 |
Push $2 |
1713 |
|
1714 |
StrCpy $2 $0 1 -1 |
1715 |
StrCmp $2 '\' 0 +3 |
1716 |
StrCpy $0 $0 -1 |
1717 |
goto -3 |
1718 |
|
1719 |
StrCpy $1 0 |
1720 |
IntOp $1 $1 - 1 |
1721 |
StrCpy $2 $0 1 $1 |
1722 |
StrCmp $2 '\' +2 |
1723 |
StrCmp $2 '' 0 -3 |
1724 |
StrCpy $0 $0 $1 |
1725 |
|
1726 |
Pop $2 |
1727 |
Pop $1 |
1728 |
Exch $0 |
1729 |
|
1730 |
!verbose pop |
1731 |
!macroend |
1732 |
|
1733 |
!define GetFileName `!insertmacro GetFileNameCall` |
1734 |
!define un.GetFileName `!insertmacro GetFileNameCall` |
1735 |
|
1736 |
!macro GetFileName |
1737 |
!macroend |
1738 |
|
1739 |
!macro un.GetFileName |
1740 |
!macroend |
1741 |
|
1742 |
!macro GetFileName_ |
1743 |
!verbose push |
1744 |
!verbose ${_FILEFUNC_VERBOSE} |
1745 |
|
1746 |
Exch $0 |
1747 |
Push $1 |
1748 |
Push $2 |
1749 |
|
1750 |
StrCpy $2 $0 1 -1 |
1751 |
StrCmp $2 '\' 0 +3 |
1752 |
StrCpy $0 $0 -1 |
1753 |
goto -3 |
1754 |
|
1755 |
StrCpy $1 0 |
1756 |
IntOp $1 $1 - 1 |
1757 |
StrCpy $2 $0 1 $1 |
1758 |
StrCmp $2 '' FileFunc_GetFileName_end |
1759 |
StrCmp $2 '\' 0 -3 |
1760 |
IntOp $1 $1 + 1 |
1761 |
StrCpy $0 $0 '' $1 |
1762 |
|
1763 |
FileFunc_GetFileName_end: |
1764 |
Pop $2 |
1765 |
Pop $1 |
1766 |
Exch $0 |
1767 |
|
1768 |
!verbose pop |
1769 |
!macroend |
1770 |
|
1771 |
!define GetBaseName `!insertmacro GetBaseNameCall` |
1772 |
!define un.GetBaseName `!insertmacro GetBaseNameCall` |
1773 |
|
1774 |
!macro GetBaseName |
1775 |
!macroend |
1776 |
|
1777 |
!macro un.GetBaseName |
1778 |
!macroend |
1779 |
|
1780 |
!macro GetBaseName_ |
1781 |
!verbose push |
1782 |
!verbose ${_FILEFUNC_VERBOSE} |
1783 |
|
1784 |
Exch $0 |
1785 |
Push $1 |
1786 |
Push $2 |
1787 |
Push $3 |
1788 |
|
1789 |
StrCpy $1 0 |
1790 |
StrCpy $3 '' |
1791 |
|
1792 |
FileFunc_GetBaseName_loop: |
1793 |
IntOp $1 $1 - 1 |
1794 |
StrCpy $2 $0 1 $1 |
1795 |
StrCmp $2 '' FileFunc_GetBaseName_trimpath |
1796 |
StrCmp $2 '\' FileFunc_GetBaseName_trimpath |
1797 |
StrCmp $3 'noext' FileFunc_GetBaseName_loop |
1798 |
StrCmp $2 '.' 0 FileFunc_GetBaseName_loop |
1799 |
StrCpy $0 $0 $1 |
1800 |
StrCpy $3 'noext' |
1801 |
StrCpy $1 0 |
1802 |
goto FileFunc_GetBaseName_loop |
1803 |
|
1804 |
FileFunc_GetBaseName_trimpath: |
1805 |
StrCmp $1 -1 FileFunc_GetBaseName_empty |
1806 |
IntOp $1 $1 + 1 |
1807 |
StrCpy $0 $0 '' $1 |
1808 |
goto FileFunc_GetBaseName_end |
1809 |
|
1810 |
FileFunc_GetBaseName_empty: |
1811 |
StrCpy $0 '' |
1812 |
|
1813 |
FileFunc_GetBaseName_end: |
1814 |
Pop $3 |
1815 |
Pop $2 |
1816 |
Pop $1 |
1817 |
Exch $0 |
1818 |
|
1819 |
!verbose pop |
1820 |
!macroend |
1821 |
|
1822 |
!define GetFileExt `!insertmacro GetFileExtCall` |
1823 |
!define un.GetFileExt `!insertmacro GetFileExtCall` |
1824 |
|
1825 |
!macro GetFileExt |
1826 |
!macroend |
1827 |
|
1828 |
!macro un.GetFileExt |
1829 |
!macroend |
1830 |
|
1831 |
!macro GetFileExt_ |
1832 |
!verbose push |
1833 |
!verbose ${_FILEFUNC_VERBOSE} |
1834 |
|
1835 |
Exch $0 |
1836 |
Push $1 |
1837 |
Push $2 |
1838 |
|
1839 |
StrCpy $1 0 |
1840 |
|
1841 |
FileFunc_GetFileExt_loop: |
1842 |
IntOp $1 $1 - 1 |
1843 |
StrCpy $2 $0 1 $1 |
1844 |
StrCmp $2 '' FileFunc_GetFileExt_empty |
1845 |
StrCmp $2 '\' FileFunc_GetFileExt_empty |
1846 |
StrCmp $2 '.' 0 FileFunc_GetFileExt_loop |
1847 |
|
1848 |
StrCmp $1 -1 FileFunc_GetFileExt_empty |
1849 |
IntOp $1 $1 + 1 |
1850 |
StrCpy $0 $0 '' $1 |
1851 |
goto FileFunc_GetFileExt_end |
1852 |
|
1853 |
FileFunc_GetFileExt_empty: |
1854 |
StrCpy $0 '' |
1855 |
|
1856 |
FileFunc_GetFileExt_end: |
1857 |
Pop $2 |
1858 |
Pop $1 |
1859 |
Exch $0 |
1860 |
|
1861 |
!verbose pop |
1862 |
!macroend |
1863 |
|
1864 |
!define BannerTrimPath `!insertmacro BannerTrimPathCall` |
1865 |
!define un.BannerTrimPath `!insertmacro BannerTrimPathCall` |
1866 |
|
1867 |
!macro BannerTrimPath |
1868 |
!macroend |
1869 |
|
1870 |
!macro un.BannerTrimPath |
1871 |
!macroend |
1872 |
|
1873 |
!macro BannerTrimPath_ |
1874 |
!verbose push |
1875 |
!verbose ${_FILEFUNC_VERBOSE} |
1876 |
|
1877 |
Exch $1 |
1878 |
Exch |
1879 |
Exch $0 |
1880 |
Exch |
1881 |
Push $2 |
1882 |
Push $3 |
1883 |
Push $4 |
1884 |
|
1885 |
StrCpy $3 $1 1 -1 |
1886 |
IntOp $1 $1 + 0 |
1887 |
StrLen $2 $0 |
1888 |
IntCmp $2 $1 FileFunc_BannerTrimPath_end FileFunc_BannerTrimPath_end |
1889 |
IntOp $1 $1 - 3 |
1890 |
IntCmp $1 0 FileFunc_BannerTrimPath_empty FileFunc_BannerTrimPath_empty |
1891 |
StrCmp $3 'A' FileFunc_BannerTrimPath_A-trim |
1892 |
StrCmp $3 'B' FileFunc_BannerTrimPath_B-trim |
1893 |
StrCmp $3 'C' FileFunc_BannerTrimPath_C-trim |
1894 |
StrCmp $3 'D' FileFunc_BannerTrimPath_D-trim |
1895 |
|
1896 |
FileFunc_BannerTrimPath_A-trim: |
1897 |
StrCpy $3 $0 1 1 |
1898 |
StrCpy $2 0 |
1899 |
StrCmp $3 ':' 0 +2 |
1900 |
IntOp $2 $2 + 2 |
1901 |
|
1902 |
FileFunc_BannerTrimPath_loopleft: |
1903 |
IntOp $2 $2 + 1 |
1904 |
StrCpy $3 $0 1 $2 |
1905 |
StrCmp $2 $1 FileFunc_BannerTrimPath_C-trim |
1906 |
StrCmp $3 '\' 0 FileFunc_BannerTrimPath_loopleft |
1907 |
StrCpy $3 $0 $2 |
1908 |
IntOp $2 $2 - $1 |
1909 |
IntCmp $2 0 FileFunc_BannerTrimPath_B-trim 0 FileFunc_BannerTrimPath_B-trim |
1910 |
|
1911 |
FileFunc_BannerTrimPath_loopright: |
1912 |
IntOp $2 $2 + 1 |
1913 |
StrCpy $4 $0 1 $2 |
1914 |
StrCmp $2 0 FileFunc_BannerTrimPath_B-trim |
1915 |
StrCmp $4 '\' 0 FileFunc_BannerTrimPath_loopright |
1916 |
StrCpy $4 $0 '' $2 |
1917 |
StrCpy $0 '$3\...$4' |
1918 |
goto FileFunc_BannerTrimPath_end |
1919 |
|
1920 |
FileFunc_BannerTrimPath_B-trim: |
1921 |
StrCpy $2 $1 |
1922 |
IntOp $2 $2 - 1 |
1923 |
StrCmp $2 -1 FileFunc_BannerTrimPath_C-trim |
1924 |
StrCpy $3 $0 1 $2 |
1925 |
StrCmp $3 '\' 0 -3 |
1926 |
StrCpy $0 $0 $2 |
1927 |
StrCpy $0 '$0\...' |
1928 |
goto FileFunc_BannerTrimPath_end |
1929 |
|
1930 |
FileFunc_BannerTrimPath_C-trim: |
1931 |
StrCpy $0 $0 $1 |
1932 |
StrCpy $0 '$0...' |
1933 |
goto FileFunc_BannerTrimPath_end |
1934 |
|
1935 |
FileFunc_BannerTrimPath_D-trim: |
1936 |
StrCpy $3 -1 |
1937 |
IntOp $3 $3 - 1 |
1938 |
StrCmp $3 -$2 FileFunc_BannerTrimPath_C-trim |
1939 |
StrCpy $4 $0 1 $3 |
1940 |
StrCmp $4 '\' 0 -3 |
1941 |
StrCpy $4 $0 '' $3 |
1942 |
IntOp $3 $1 + $3 |
1943 |
IntCmp $3 2 FileFunc_BannerTrimPath_C-trim FileFunc_BannerTrimPath_C-trim |
1944 |
StrCpy $0 $0 $3 |
1945 |
StrCpy $0 '$0...$4' |
1946 |
goto FileFunc_BannerTrimPath_end |
1947 |
|
1948 |
FileFunc_BannerTrimPath_empty: |
1949 |
StrCpy $0 '' |
1950 |
|
1951 |
FileFunc_BannerTrimPath_end: |
1952 |
Pop $4 |
1953 |
Pop $3 |
1954 |
Pop $2 |
1955 |
Pop $1 |
1956 |
Exch $0 |
1957 |
|
1958 |
!verbose pop |
1959 |
!macroend |
1960 |
|
1961 |
!define DirState `!insertmacro DirStateCall` |
1962 |
!define un.DirState `!insertmacro DirStateCall` |
1963 |
|
1964 |
!macro DirState |
1965 |
!macroend |
1966 |
|
1967 |
!macro un.DirState |
1968 |
!macroend |
1969 |
|
1970 |
!macro DirState_ |
1971 |
!verbose push |
1972 |
!verbose ${_FILEFUNC_VERBOSE} |
1973 |
|
1974 |
Exch $0 |
1975 |
Push $1 |
1976 |
ClearErrors |
1977 |
|
1978 |
FindFirst $1 $0 '$0\*.*' |
1979 |
IfErrors 0 +3 |
1980 |
StrCpy $0 -1 |
1981 |
goto FileFunc_DirState_end |
1982 |
StrCmp $0 '.' 0 +4 |
1983 |
FindNext $1 $0 |
1984 |
StrCmp $0 '..' 0 +2 |
1985 |
FindNext $1 $0 |
1986 |
FindClose $1 |
1987 |
IfErrors 0 +3 |
1988 |
StrCpy $0 0 |
1989 |
goto FileFunc_DirState_end |
1990 |
StrCpy $0 1 |
1991 |
|
1992 |
FileFunc_DirState_end: |
1993 |
Pop $1 |
1994 |
Exch $0 |
1995 |
|
1996 |
!verbose pop |
1997 |
!macroend |
1998 |
|
1999 |
!define RefreshShellIcons `!insertmacro RefreshShellIconsCall` |
2000 |
!define un.RefreshShellIcons `!insertmacro RefreshShellIconsCall` |
2001 |
|
2002 |
!macro RefreshShellIcons |
2003 |
!macroend |
2004 |
|
2005 |
!macro un.RefreshShellIcons |
2006 |
!macroend |
2007 |
|
2008 |
!macro RefreshShellIcons_ |
2009 |
!verbose push |
2010 |
!verbose ${_FILEFUNC_VERBOSE} |
2011 |
|
2012 |
System::Call 'shell32::SHChangeNotify(i 0x08000000, i 0, i 0, i 0)' |
2013 |
|
2014 |
!verbose pop |
2015 |
!macroend |
2016 |
|
2017 |
!endif |