返回列表 回复 发帖

NSIS教程2:两组件的依赖|互斥 作者iMac

转自狂人论坛  作者iMac

实现起来的脚本:
  1. Function .onSelChange
  2. SectionGetFlags ${secA} $1
  3. StrCmp $1 1 0 +2
  4. SectionSetFlags ${secB} 1
  5. FunctionEnd
复制代码
将此代码复制到最后一个Sectiongroupend(如果没有就是Sectionend)的后面即可。其中SecA、SecB分别改为你要定义的互斥软件的编号

案例分析:
QQ狂人DIY版的组件包里面,Tim平台是很重要的组件,很多组件依赖他才可以运行,看看狂人是怎么处理的(Tim平台编号是Sec18)
  1. Function .onSelChange
  2. SectionGetFlags ${sec11} $2
  3. StrCmp $2 1 0 +2
  4. SectionSetFlags ${sec18} 1
  5. FunctionEnd
复制代码
如何让2个互斥的组建不被同时安装呢?把
  1. SectionSetFlags ${secB} 1
复制代码
改成
  1. SectionSetFlags ${secB} 0
复制代码
就可以了
学习了,lz辛苦咯~~
StrCmp $2 1 0 +7
SectionSetFlags ${SEC01} 0
SectionSetFlags ${SEC06} 0
SectionSetFlags ${SEC07} 0
SectionSetFlags ${SEC08} 0
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 1
StrCmp $4 1 0 +6
SectionSetFlags ${SEC01} 0
SectionSetFlags ${SEC03} 0
SectionSetFlags ${SEC04} 0
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 1
StrCmp $5 1 0 +6
SectionSetFlags ${SEC01} 0
SectionSetFlags ${SEC03} 0
SectionSetFlags ${SEC04} 0
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 1
StrCmp $1 1 0 +7
SectionSetFlags ${SEC01} 1
SectionSetFlags ${SEC06} 0
SectionSetFlags ${SEC07} 0
SectionSetFlags ${SEC08} 0
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 1
StrCmp $3 1 0 +6
SectionSetFlags ${SEC01} 1
SectionSetFlags ${SEC03} 0
SectionSetFlags ${SEC04} 0
GetDlgItem $0 $HWNDPARENT 1
EnableWindow $0 1

我是这样 不过怎么搞 如果点到设置了互斥的组件时 第1次只会取消掉互斥组件的勾 要再点一下才能勾上。
现在大概搞清楚为什么了 可能因为把区段设置为0 就不能再设置为1了 但是鼠标点区段组的方式不同 所以鼠标再点一下就可以勾上。有没有其他勾上区段组的代码?
返回列表