杉宫竹苑工作室

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

NSIS 互斥组件

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

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

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

x
问: 组件A 组件B 组件C 均为可选,A可单独安装,B或者C被选择的时候A必须被选择

答: 以下代码,
  1.   Section "组件 A" aaa
  2.     detailprint "A"
  3.   SectionEnd

  4.   Section "组件 B" bbb
  5.     detailprint "B"
  6.   SectionEnd

  7.   Section "组件 C" ccc
  8.     detailprint "C"
  9.   SectionEnd

  10.   Function .onSelChange
  11.     SectionGetFlags ${bbb} $0
  12.     SectionGetFlags ${ccc} $1
  13.     IntOp $0 $0 & 1
  14.     IntOp $1 $1 & 1
  15.     IntCmp $0 1 0 +2
  16.      SectionSetFlags ${aaa} 1
  17.     IntCmp $1 1 0 +2
  18.      SectionSetFlags ${aaa} 1
  19.   FunctionEnd
复制代码

解释:SectionGetFlags 表示获取某区段的flags状态(就是是否被勾选,选中返回值为1,反之为0)
SectionGetFlags ${bbb} $0 表示获取序号为${bbb}的区段的Flags状态并把返回值输出到变量 $0,C 区段相同。
接着就是 StrCmp ,解释同上楼。
SectionSetFlags ${aaa} 1 表示设置序号为 ${aaa} 区段的 Flags 状态为 1,即勾选。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-19 14:20 , Processed in 0.101450 second(s), 18 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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