;IO.INI
[Settings] NumFields=7 [Field 1] Type=label Text=SQLServer 连接 Left=0 Right=-1 Top=0 Bottom=9 [Field 2] Type=Text Left=40 Right=163 Top=22 Bottom=35 [Field 3] Type=Text Left=39 Right=163 Top=43 Bottom=55 [Field 4] Type=Password Left=39 Right=163 Top=62 Bottom=75 [Field 5] Type=Label Text=密码: Left=8 Right=36 Top=65 Bottom=75 [Field 6] Type=Label Text=账号: Left=8 Right=38 Top=46 Bottom=56 [Field 7] Type=Label Text=服务器: Left=6 Right=34 Top=27 Bottom=36
!include "MUI.nsh" !include "Sections.nsh" Name "自定义页面结合组件选择测试" OutFile "Setup.exe" !insertmacro MUI_PAGE_COMPONENTS Page custom PageInitFunc PageLeaveFunc "" # 自定义页面 !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "SimpChinese" # 设置安装界面语言 ShowInstDetails show # 显示安装进度信息 ReserveFile "io.ini" # 预先打包文件,方便安装加速释放 io.ini !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS # 预先打包文件,方便安装加速释放 Var SHOW_PAGE # 是否显示自定义页面 Function .onInit StrCpy $SHOW_PAGE "show" # 初始化设显示自定义页面, 如果你默认不打勾,请用 StrCpy $SHOW_PAGE "" !insertmacro MUI_INSTALLOPTIONS_EXTRACT "io.ini" # 初始化页面 FunctionEnd Function PageInitFunc StrCmp $SHOW_PAGE "show" 0 +2 # 如果没有设置“show”则跳过下面的页面显示 !insertmacro MUI_INSTALLOPTIONS_DISPLAY "io.ini" # 显示页面 FunctionEnd Function PageLeaveFunc MessageBox MB_OK "自定义页面离开时操作,即点击下一步后触发的事件" FunctionEnd Section "数据库处理(自定义页面)" SEC1 # 所有数据库处理在这里写 MessageBox MB_OK "“数据库处理(自定义页面)”操作内容" SectionEnd Section "其他操作" SEC2 # 这里填写其他组件的操作 MessageBox MB_OK "“其他操作”操作内容" SectionEnd Function .onSelChange Push $0 SectionGetFlags ${SEC1} $0 # 检测 SEC1 的选择状态,1为已勾选该组件 IntOp $0 $0 & ${SF_SELECTED} # 只过滤勾选的状态,Checkbox 的状态可能包含多位 ;如果为 1 则设置显示自定义页面 IntCmp $0 ${SF_SELECTED} showpage StrCpy $SHOW_PAGE "" # 设置不显示自定义页面 Goto done showpage: StrCpy $SHOW_PAGE "show" # 设置显示自定义页面 done: Pop $0 FunctionEnd /*--------------------------------------- 上面是一个在 .onSelChange 中实现实时设定是否显示页面的方法。 下面的是一个在显示页面时才检测 Section 状态的方法。 选择其中一种方式即可 -----------------------------------------*/ !include "MUI.nsh" !include "Sections.nsh" Name "自定义页面结合组件选择测试" OutFile "Setup.exe" !insertmacro MUI_PAGE_COMPONENTS Page custom PageInitFunc PageLeaveFunc "" # 自定义页面 !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_LANGUAGE "SimpChinese" # 设置安装界面语言 ShowInstDetails show # 显示安装进度信息 ReserveFile "io.ini" # 预先打包文件,方便安装加速释放 io.ini !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS # 预先打包文件,方便安装加速释放 Function .onInit !insertmacro MUI_INSTALLOPTIONS_EXTRACT "io.ini" # 初始化页面 FunctionEnd Function PageInitFunc SectionGetFlags ${SEC1} $0 # 检测 SEC1 的选择状态,1为已勾选该组件 IntOp $0 $0 & ${SF_SELECTED} # 只过滤勾选的状态,Checkbox 的状态可能包含多位 IntCmp $0 ${SF_SELECTED} showpage hidepage hidepage showpage: !insertmacro MUI_INSTALLOPTIONS_DISPLAY "io.ini" # 显示页面 hidepage: FunctionEnd Function PageLeaveFunc MessageBox MB_OK "自定义页面离开时操作,即点击下一步后触发的事件" FunctionEnd Section "数据库处理(自定义页面)" SEC1 # 所有数据库处理在这里写 MessageBox MB_OK "“数据库处理(自定义页面)”操作内容" SectionEnd Section "其他操作" SEC2 # 这里填写其他组件的操作 MessageBox MB_OK "“其他操作”操作内容" SectionEnd