我的目标是在使用静默安装(/ S param)将NSIS命令行参数传递给复制设置时,知道是否使用任何检查或代码snipp来确定是否存在某种依赖性。
NSIS样本:http://nsis.sourceforge.net/Get_command_line_parameter_by_name
例如,如果我有三个参数:Setup.exe / S param1 =“”param2 =“”param3 =“”
如何查看以下secanrio:
${if} <Param1 is passed to Setup.exe>
<Param2 must ALSO be passed to Setup.exe>
${else}
<Error message notifiing that Param1 is present, but dependent Param2 param is missing in CMD parameters>
谢谢!
我真的希望你至少能分享代码snipp ...如果不是完整的功能代码。
答案 0 :(得分:0)
outfile test.exe
requestexecutionlevel user
silentinstall silent ;always force silent in this sample
!include LogicLib.nsh
!include FileFunc.nsh
Function StripOptPrefix
Exch $0
Push $1
StrCpy $1 $0 1
${If} $1 == "="
${OrIf} $1 == ":"
StrCpy $0 $0 "" 1
${EndIf}
Pop $1
Exch $0
FunctionEnd
!macro StripOptPrefix var
Push ${var}
call StripOptPrefix
Pop ${var}
!macroend
Section
${GetParameters} $0
${If} $0 == ""
;No parameters, lets run the tests
ExecWait '"$exepath" /param1=foo'
ExecWait '"$exepath" /param1=foo /param2=bar'
${Else}
${GetOptions} $0 "/param1" $1
${If} ${Errors}
# /param 1 not used, do nothing?
${Else}
${GetOptions} $0 "/param2" $2
${If} ${Errors}
MessageBox mb_iconstop "Missing /param2, required by /param1"
Quit
${Else}
!insertmacro StripOptPrefix $1
!insertmacro StripOptPrefix $2
MessageBox mb_ok "1=$1$\n2=$2"
${EndIf}
${EndIf}
${EndIf}
SectionEnd