·汉化新世纪 ·汉化新世纪论坛 ·百家争鸣 ·论坛集萃 ·汉化问答 ·软件介绍
文章首页 >> 汉化教学 >> 工具使用 >> NSIS 自定义页面结合组件选择安装    Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎

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

作者: RESTOOLS 来源:RESTOOLS 时间:2005-09-15 点击:13654

以下是引用片段:
问题:
如何控制一个自定义页面的显示与否,例如把一个"数据库操作"做为一个组件选项,而组件选项的下一页(即自定义页面)就是输入数据库连接信息,但是,当用户没有选择"数据库操作"这个组件时,点下一步仍然会出现输入数据库密码页面,怎样做出一个判断:当用户选择"数据库操作"时,下一页为提示输入数据库密码页面,当用户没有选择"数据库操作"时,下一页为安装页面(MUI_PAGE_INSTFILES),即跳过了提示输入数据库密码页面。
 

以下是一个脚本例子,没有作数据库操作的内容,把问题简单化。 (顺便测试一下 VNISEdit 的 UBB 代码生成功能,^_^v)
引用 Setup.nsi 发表于 2005-5-15 14:55:19 的内容:
以下是代码片段:
/*---------------------------------------
自定义页面结合组件选择安装测试简单脚本。
-----------------------------------------*/

!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


引用 io.ini 发表于 2005-5-15 14:13:17 的内容:
以下是代码片段:
[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


汉化新世纪 责任编辑: 乾 .:|:. 标签(Tag): NSIS 安装

·上一篇: 拿起你手中的魔术棒,是时候让 INNO 变变身了 ·下一篇: 实现 NSIS 自定义页面中的控件操作代码

· 版权申明: 本文引自《RESTOOLS》,如有版权疑问请及时联系本站,以便本站处理。

· 转载申明: 本文引自《RESTOOLS》[ 作者: RESTOOLS],如需转载请直接联系原始作者,并请注明原始出处。

相关文章                                                                                发表评论 打印此文 关闭窗口

| 设为首页 | 加入收藏 | 联系我们 | 友情链接
Creative Commons License,创作共用协议(中文版)  署名 非商业性使用 禁止演绎
本站内容,除转载或版权特别申明的内容外,皆遵守 创造共用协议中文版之“署名-非商业性使用-禁止演绎 2.5 中国大陆”条款
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 2.5 China License.
本网站内容源自汉化新世纪论坛的摘录和汉化新世纪成员的原创文章。
凡汉化新世纪论坛的文字皆默认为汉化新世纪与原作者共同拥有并授权发布。
如对本站发布文章有所异议请来信告知,我们将及时删除。
凡商业摘录本站文字请先与我们联系,本站将保留非授权商业发布的追究权利。
凡非商业摘录本站文字请明显注明出处和原作者,并不得改动,凡改动必先征求原作者同意。
苏ICP备05002283号