杉宫竹苑工作室

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

使用 SectionSetFlags 根据不同环境自动勾选特定区段

[复制链接]
发表于 2017-2-23 21:41:02 | 显示全部楼层 |阅读模式

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

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

x
1、加两个区段,分别对应开发版和企业版,并设置为默认不选和只读。
  1. Section /o "SQL2000开发版" SEC01
  2.   SectionIn RO
  3.   MessageBox MB_OK|MB_ICONEXCLAMATION '开发版!'
  4. SectionEnd

  5. Section /o "SQL2000企业版" SEC02
  6.   SectionIn RO
  7.   MessageBox MB_OK|MB_ICONEXCLAMATION '企业版!'
  8. SectionEnd
复制代码


2、在.onInit根据不同操作系统勾选上述区段。
  1. Function .onInit

  2.   ;首先要判断操作系统版本,代码略

  3.   ${If} ${IsWinXP}
  4.   ${OrIf} ${IsWinVista}
  5.   ${OrIf} ${IsWin7}
  6.   SectionSetFlags ${sec01} 1
  7.   ${EndIf}

  8.   ${If} ${IsWin2000}
  9.   ${OrIf} ${IsWin2003}
  10.   ${OrIf} ${IsWin2008}
  11.   ${OrIf} ${IsWin2008R2}
  12.   SectionSetFlags ${sec02} 1
  13.   ${EndIf}
  14. FunctionEn
复制代码


另:在第2步当然不局限于判断操作系统,而是可以根据指定的特征,比如判断注册表键值或者某文件是否存在等。这里只是提一个思路。



  1. Name "根据不同环境自动勾选特定区段"
  2. OutFile "根据不同环境自动勾选特定区段.exe"
  3. !include "MUI2.nsh"
  4. !include "WinVer.nsh"
  5. !insertmacro MUI_PAGE_COMPONENTS
  6. !insertmacro MUI_PAGE_INSTFILES
  7. !insertmacro MUI_LANGUAGE "SimpChinese"
  8. InstallDir "$TEMP"

  9. Section /o "SQL2000开发版" SEC01
  10.   SectionIn RO
  11.   MessageBox MB_OK|MB_ICONEXCLAMATION '开发版!'
  12. SectionEnd

  13. Section /o "SQL2000企业版" SEC02
  14.   SectionIn RO
  15.   MessageBox MB_OK|MB_ICONEXCLAMATION '企业版!'
  16. SectionEnd

  17. Function .onInit
  18. ${If} ${IsServerOS}
  19.   SectionGetFlags ${SEC02} $R0
  20.   IntOp $0 $R0 | ${SF_SELECTED}
  21.   SectionSetFlags ${SEC02} $0
  22. ${Else}
  23.   SectionGetFlags ${SEC01} $R0
  24.   IntOp $0 $R0 | ${SF_SELECTED}
  25.   SectionSetFlags ${SEC01} $0
  26. ${EndIf}
  27. FunctionEnd
复制代码


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-18 03:14 , Processed in 0.109701 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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