NSIS 自定义页面结合组件选择安装(二)

以前有一个例子是一个在 .onSelChange 中实现实时设定是否显示下一个自定义页面的方法。 http://restools.hanzify.org/article.asp?id=26
但是这种方法需要定义一个变量,而且需要每次点击“组件”的时候都会触发事件,显得过于累赘。下面这个例子是在下一个页面的初始化时检测组件选择,从而达到是否显示自定义页面的效果。
引用来自 setup.nsi,2005-8-23 引用来自 setup.nsi,2005-8-23
/*---------------------------------------
自定义页面结合组件选择安装测试简单脚本。
-----------------------------------------*/

!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

引用来自 io.ini,2005-8-23 引用来自 io.ini,2005-8-23
[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=54

[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
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值