在正常情况下安装包会有“欢迎界面”、“安装目录选择界面”等等,有时我们需要安装包自动跳过这 2 个界面,如安装包通过命令行参数传入“安装目录”(如setup.exe /installdir F:\test),本文讲述如何使安装包跳过指定的界面。

HOW TO DO?

在页面插入宏之前通过MUI_PAGE_CUSTOMFUNCTION_PRE来指定 pre 处理函数,在该函数中来判断是否需要跳过:

1
2
3
4
5
6
7
8
# 安装程序欢迎页面
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipPage
!insertmacro MUI_PAGE_WELCOME


# 安装程序显示安装目录选择页面
!define MUI_PAGE_CUSTOMFUNCTION_PRE SkipPage
!insertmacro MUI_PAGE_DIRECTORY

SkipPage函数定义如下:

1
2
3
4
5
6
Function SkipPage
StrLen $R1 $paramInstllDir
${If} $R1 > 0
Abort
${EndIf}
FunctionEnd

获取命令行参数存入$paramInstllDir变量,并解析命令行参数:

1
2
3
4
5
6
7
8
9
10
!macro ParseParameters
${GetParameters} $R0
${GetOptions} $R0 '/installdir' $R1
StrCpy $paramInstllDir $R1

StrLen $R1 $paramInstllDir
${If} $R1 > 0
StrCpy $INSTDIR $paramInstllDir
${EndIf}
!macroend