Skip to content
⌘ NSIS Forum Archive

System: near the second release

2 posts

brainsucker#

System: near the second release

Almost ready, just more docs, tutorial and some examples needed (I think).
See Examples\System.nsi for current examples (including System based Splash), Contrib\System\New System.Txt for short description, Contrib\System\WhatsNew.txt is here 🙂

WhatsNew:
1. Syntax, with inline input
2. Int64 full support (conversion/operations/comparison)
3. Structures support
4. Callbacks support, including multilevel callbacks
5. Some useful rountines (Alloc, Free, Copy)
6. CDecl and StdCall calling conventions

so the functionality is almost unlimited now.

P.S.s:
1. Remove old system from repository before posting a new one, please.
2. VC7 project only. I'll try to create VC6 project to final release.
brainsucker#
New example

; Memory for paths   
     System::Alloc 1024
     Pop $1
     ; Get drives   
     System::Call 'kernel32::GetLogicalDriveStringsA(i 1024, i r1) i'
enumok:
     ; One more drive?   
     System::Call 'kernel32::lstrlenA(i r1) i.r2'
     IntCmp $2 0 enumex
     ; Drive space   
     System::Call 'kernel32::GetDiskFreeSpaceExA(i r1, *l .r3, *l .r4, *l .r5) i'
     ; Pretty KBs
     System::Int64Op $3 / 1024
     Pop $3
     System::Int64Op $4 / 1024
     Pop $4
     System::Int64Op $5 / 1024
     Pop $5 
     ; Get pretty drive path string   
     System::Call '*$1(&t1024 .r6)'
     ; Message box      
     System::Call 'user32::MessageBoxA(i $HWNDPARENT,\\
t "Path: `$6`, Free for Caller: $3 kb, Free for All: $5 kb, Disk Size: $4 kb",\\
t "Disk spaces example", i 33) i.r0'
     ; User cancel?   
     IntCmp $0 2 enumex
     ; 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 
pretty php highlighting (kichik) 😁