![](/img/trans.png)
[英]Calling PRE functions of MUI in NSIS installer, skipping pages/dialogs in NSIS installer
[英]NSIS - Skip certain dialogs using command-line arguments?
有没有办法让NSIS安装程序跳过某些对话框?
它具有以下命令行参数,
/S
, /NCRC
和/D=dir
尽管/S
和/NCRC
可以用于静默和无人值守模式,但是是否有命令行参数使安装程序跳过安装程序中的某些对话框并显示其余对话框? 例如。 跳过“欢迎”对话框和接下来的两个对话框,然后转到第四个对话框。
/ S,/ NCRC和/ D =是唯一具有内置支持的安装程序参数,您需要自己处理其他任何事情。
可以通过在页面预回调中调用Abort
来跳过页面。 也可以向前跳特定数量的页面 。 GetOptions
宏可用于解析命令行。
OutFile Test.exe
RequestExecutionLevel user
InstallDir $Temp
!include LogicLib.nsh
!include FileFunc.nsh
Page License LicPre
Page Components CmpPre
Page Directory "" DiShow
Page InstFiles
Var SkippedL
Var SkippedC
!macro AbortIfCmdlineParam Switch Var
${GetParameters} $0
ClearErrors
${GetOptions} $0 "${Switch}" $0
${IfNot} ${Errors}
${If} ${Var} = 0
StrCpy ${Var} 1
Abort
${EndIf}
${EndIf}
!macroend
Function LicPre
!insertmacro AbortIfCmdlineParam "/SkipL" $SkippedL
FunctionEnd
Function CmpPre
!insertmacro AbortIfCmdlineParam "/SkipC" $SkippedC
FunctionEnd
Function DiShow
# Disable back button if both pages skipped, this is optional
${If} $SkippedL <> 0
${AndIf} $SkippedC <> 0
GetDlgItem $0 $hwndparent 3
EnableWindow $0 0
${EndIf}
FunctionEnd
Section
SectionEnd
以Test /SkipL /SkipC
身份运行以跳过两者。
要么:
OutFile Test.exe
RequestExecutionLevel user
InstallDir $Temp
!include LogicLib.nsh
!include FileFunc.nsh
Page License "" LicShow
Page Components
Page Directory
Page InstFiles
Function LicShow
Var /Global HasSkipped
${GetParameters} $0
ClearErrors
${GetOptions} $0 "/Skip=" $0
${IfNot} ${Errors}
${AndIf} $0 < 4 ; Don't let user skip InstFiles
${AndIf} $HasSkipped = 0
StrCpy $HasSkipped 1
SendMessage $HWNDPARENT 0x408 $0 ""
${EndIf}
FunctionEnd
Section
SectionEnd
...并以Test /Skip=2
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.