Search code examples
nsis

NSIS Function with more than 1 parameters


Can a NSIS Function have more than one parameter?

Why wont this code compile? If I cant have more than 1 param for a function what are my other options(disregarding using a macro)?

Compile error:

Function expects 1 parameters, got 4. Usage: Function function_name

Outfile "test.exe"
Caption ""
Name ""

# Compile Error Here: "Function expects 1 parameters, got 4. Usage: Function function_name"
Function MyFunction p1 p2 p3
    DetailPrint "$p1, $p2, $p3"
FunctionEnd

Section
    DetailPrint "Hello World"
SectionEnd

Solution

  • You have to pass parameters in registers and/or on the stack:

    Function onstack
    pop $0
    detailprint $0
    FunctionEnd
    
    Function reg0
    detailprint $0
    FunctionEnd
    
    Section
    push "Hello"
    call onstack
    strcpy $0 "World"
    call reg0
    SectionEnd