杉宫竹苑工作室

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 2083|回复: 0

NSIS 组件关联页面

[复制链接]
发表于 2017-2-26 13:42:18 | 显示全部楼层 |阅读模式

正式会员享受无限制浏览网站功能和高速网盘下载,赶快加入本站吧!

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. !include "MUI.nsh"
  2. !include "Sections.nsh"

  3. Name "自定义页面结合组件选择测试"
  4. OutFile "Setup.exe"

  5. !insertmacro MUI_PAGE_COMPONENTS
  6. Page custom PageInitFunc PageLeaveFunc ""  # 自定义页面
  7. !insertmacro MUI_PAGE_INSTFILES

  8. !insertmacro MUI_LANGUAGE "SimpChinese"  # 设置安装界面语言

  9. ShowInstDetails show # 显示安装进度信息

  10. ReserveFile "io.ini" # 预先打包文件,方便安装加速释放 io.ini
  11. !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS  # 预先打包文件,方便安装加速释放

  12. Var SHOW_PAGE  # 是否显示自定义页面

  13. Function .onInit
  14.   StrCpy $SHOW_PAGE "show" # 初始化设显示自定义页面, 如果你默认不打勾,请用 StrCpy $SHOW_PAGE ""
  15.   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "io.ini"  # 初始化页面
  16. FunctionEnd

  17. Function PageInitFunc
  18.   StrCmp $SHOW_PAGE "show" 0 +2 # 如果没有设置“show”则跳过下面的页面显示
  19.   !insertmacro MUI_INSTALLOPTIONS_DISPLAY "io.ini"  # 显示页面
  20. FunctionEnd

  21. Function PageLeaveFunc
  22.   MessageBox MB_OK "自定义页面离开时操作,即点击下一步后触发的事件"
  23. FunctionEnd

  24. Section "数据库处理(自定义页面)" SEC1
  25.   # 所有数据库处理在这里写
  26.   MessageBox MB_OK "“数据库处理(自定义页面)”操作内容"
  27. SectionEnd

  28. Section "其他操作" SEC2
  29. # 这里填写其他组件的操作
  30.   MessageBox MB_OK "“其他操作”操作内容"
  31. SectionEnd

  32. Function .onSelChange
  33.   Push $0
  34.     SectionGetFlags ${SEC1} $0  # 检测 SEC1 的选择状态,1为已勾选该组件
  35.     IntOp $0 $0 & ${SF_SELECTED} # 只过滤勾选的状态,Checkbox 的状态可能包含多位
  36.     ;如果为 1 则设置显示自定义页面
  37.     IntCmp $0 ${SF_SELECTED} showpage
  38.       StrCpy $SHOW_PAGE "" # 设置不显示自定义页面
  39.       Goto done
  40.     showpage:
  41.       StrCpy $SHOW_PAGE "show" # 设置显示自定义页面
  42.     done:
  43.   Pop $0
  44. FunctionEnd


  45. /*---------------------------------------
  46. 上面是一个在 .onSelChange 中实现实时设定是否显示页面的方法。
  47. 下面的是一个在显示页面时才检测 Section 状态的方法。
  48.       选择其中一种方式即可
  49. -----------------------------------------*/

  50. !include "MUI.nsh"
  51. !include "Sections.nsh"

  52. Name "自定义页面结合组件选择测试"
  53. OutFile "Setup.exe"

  54. !insertmacro MUI_PAGE_COMPONENTS
  55. Page custom PageInitFunc PageLeaveFunc ""  # 自定义页面
  56. !insertmacro MUI_PAGE_INSTFILES

  57. !insertmacro MUI_LANGUAGE "SimpChinese"  # 设置安装界面语言

  58. ShowInstDetails show # 显示安装进度信息

  59. ReserveFile "io.ini" # 预先打包文件,方便安装加速释放 io.ini
  60. !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS  # 预先打包文件,方便安装加速释放

  61. Function .onInit
  62.   !insertmacro MUI_INSTALLOPTIONS_EXTRACT "io.ini"  # 初始化页面
  63. FunctionEnd

  64. Function PageInitFunc
  65.   SectionGetFlags ${SEC1} $0  # 检测 SEC1 的选择状态,1为已勾选该组件
  66.   IntOp $0 $0 & ${SF_SELECTED} # 只过滤勾选的状态,Checkbox 的状态可能包含多位
  67.   IntCmp $0 ${SF_SELECTED} showpage hidepage hidepage
  68.   showpage:
  69.   !insertmacro MUI_INSTALLOPTIONS_DISPLAY "io.ini"  # 显示页面
  70.   hidepage:
  71. FunctionEnd

  72. Function PageLeaveFunc
  73.   MessageBox MB_OK "自定义页面离开时操作,即点击下一步后触发的事件"
  74. FunctionEnd

  75. Section "数据库处理(自定义页面)" SEC1
  76.   # 所有数据库处理在这里写
  77.   MessageBox MB_OK "“数据库处理(自定义页面)”操作内容"
  78. SectionEnd

  79. Section "其他操作" SEC2
  80. # 这里填写其他组件的操作
  81.   MessageBox MB_OK "“其他操作”操作内容"
  82. SectionEnd
复制代码
  1. IO.INI

  2. [Settings]
  3. NumFields=7

  4. [Field 1]
  5. Type=label
  6. Text=SQLServer 连接
  7. Left=0
  8. Right=-1
  9. Top=0
  10. Bottom=9

  11. [Field 2]
  12. Type=Text
  13. Left=40
  14. Right=163
  15. Top=22
  16. Bottom=35

  17. [Field 3]
  18. Type=Text
  19. Left=39
  20. Right=163
  21. Top=43
  22. Bottom=55

  23. [Field 4]
  24. Type=Password
  25. Left=39
  26. Right=163
  27. Top=62
  28. Bottom=75

  29. [Field 5]
  30. Type=Label
  31. Text=密码:
  32. Left=8
  33. Right=36
  34. Top=65
  35. Bottom=75

  36. [Field 6]
  37. Type=Label
  38. Text=账号:
  39. Left=8
  40. Right=38
  41. Top=46
  42. Bottom=56

  43. [Field 7]
  44. Type=Label
  45. Text=服务器:
  46. Left=6
  47. Right=34
  48. Top=27
  49. Bottom=36
复制代码


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|Archiver|SgzyStudio

GMT+8, 2024-5-19 12:32 , Processed in 0.097075 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表