/usr/share/doc/nsis/Examples/System/System.nsi is in nsis-doc 2.46-7.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | ; This is just an example of System Plugin
;
; (c) brainsucker, 2002
; (r) BSForce
Name "System Plugin Example"
OutFile "System.exe"
!include "SysFunc.nsh"
Section "ThisNameIsIgnoredSoWhyBother?"
SetOutPath $TEMP
; ----- Sample 1 ----- Message box with custom icon -----
; there are no default beeps for custom message boxes, use sysMessageBeep
; in case you need it (see next message box example)
!insertmacro smMessageBox "i 0" "Message box with custom icon!" "System Example 1a" ${MB_OK} "i 103"
; i 0 - installer exe as module
; i 103 - icon ID
; The same example but using icon from resource.dll.
; You could use this dll for storing your resources, just replace FAR icon
; with something you really need.
File "Resource.dll"
System::Call '${sysMessageBeep} (${MB_ICONHAND})' ; custom beep
!insertmacro smMessageBox "`$TEMP\resource.dll`" "Message box with custom icon from resource.dll!" "System Example 1b" ${MB_OKCANCEL} "i 103"
Delete $TEMP\resource.dll
; ----- Sample 2 ----- Fixed disks size/space -----
StrCpy $7 ' Disk, Size, Free, Free for user:$\n$\n'
; Memory for paths
System::Alloc 1024
Pop $1
; Get drives
System::Call '${sysGetLogicalDriveStrings}(1024, r1)'
enumok:
; One more drive?
System::Call '${syslstrlen}(i r1) .r2'
IntCmp $2 0 enumex
; Is it DRIVE_FIXED?
System::Call '${sysGetDriveType} (i r1) .r3'
StrCmp $3 ${DRIVE_FIXED} 0 enumnext
; Drive space
System::Call '${sysGetDiskFreeSpaceEx}(i r1, .r3, .r4, .r5)'
; Pretty KBs will be saved on stack
System::Int64Op $3 / 1048576
System::Int64Op $5 / 1048576
System::Int64Op $4 / 1048576
; Get pretty drive path string
System::Call '*$1(&t1024 .r6)'
System::Call '${syswsprintf} (.r7, "%s%20s %20s mb %20s mb %20s mb$\n", tr7, tr6, ts, ts, ts)'
enumnext:
; Next drive path
IntOp $1 $1 + $2
IntOp $1 $1 + 1
goto enumok
enumex: ; End of drives or user cancel
; Free memory for paths
System::Free $1
; Message box
System::Call '${sysMessageBox}($HWNDPARENT, s, "System Example 2", ${MB_OKCANCEL})' "$7"
; ----- Sample 3 ----- Direct proc defenition -----
; Direct specification demo
System::Call 'user32::MessageBoxA(i $HWNDPARENT, t "Just direct MessageBoxA specification demo ;)", t "System Example 3", i ${MB_OK}) i.s'
Pop $0
; ----- Sample 4 ----- Int64, mixed definition demo -----
; Long int demo
StrCpy $2 "12312312"
StrCpy $3 "12345678903"
System::Int64Op $2 "*" $3
Pop $4
; Cdecl demo (uses 3 defenitions (simple example))
System::Call "${syswsprintf}(.R1, s,,, t, ir0) .R0 (,,tr2,tr3,$4_)" "Int64 ops and strange defenition demo, %s x %s == %s, and previous msgbox result = %d"
MessageBox MB_OKCANCEL "Cool: '$R1'"
; ----- Sample 5 ----- Small structure example -----
; Create & Fill structure
System::Call "*(i 123123123, &t10 'Hello', &i1 0x123dd, &i2 0xffeeddccaa) i.s"
Pop $1
; Read data from structure
System::Call "*$1(i .r2, &t10 .r3, &i1 .r4, &i2 .r5, &l0 .r6)"
; Show data and delete structure
MessageBox MB_OK "Structure example: $\nint == $2 $\nstring == $3 $\nbyte == $4 $\nshort == $5 $\nsize == $6"
System::Free $1
; ----- Sample 6 ----- systemGetFileSysTime demo -----
Call GetInstallerExeName
pop $0
!insertmacro smGetFileSysTime $0
System::Call '*$R0${stSYSTEMTIME}(.r1, .r2, .r3, .r4, .r5, .r6, .r7, .r8)'
MessageBox MB_OK "GetFileSysTime example: file '$0', year $1, month $2, dow $3, day $4, hour $5, min $6, sec $7, ms $8"
; free memory from SYSTEMTIME
System::Free $R0
; ----- Sample 7 ----- systemSplash -> Callbacks demonstration -----
; Logo
File /oname=spltmp.bmp "${NSISDIR}\Contrib\Graphics\Header\orange-nsis.bmp"
; File /oname=spltmp.wav "d:\Windows\Media\tada.wav"
; I. systemSplash variant
!insertmacro smSystemSplash 2000 "$TEMP\spltmp"
; II. Splash Plugin variant
; splash::show 2000 $TEMP\spltmp
; Pop $R0 ; $R0 has '1' if the user closed the splash screen early,
; remove logo
Delete $TEMP\spltmp.bmp
; Delete $TEMP\spltmp.wav
; Display splash result
pop $0
MessageBox MB_OK "Splash (callbacks) demo result $R0"
SectionEnd
; eof
|