|
  
|
1#
发表于 2007-1-2 07:39 PM
| 只看该作者
这个虽然是和教程2有点重复可是这个可是真正的原贴啊
转自狂人论坛 作者iMac
最近会写点教程,对QQ安装包制作有兴趣,且对NSIS脚本有一定了解的人可以来看看,保证有百利无一弊。呵呵……谢绝灌水
组件A,组件B,两组件互斥。
意思就是组件A与B不能同时安装,
选择组建A时,组件B自动被取消选择,
而当B被勾选时,A被自动取消选择。
实现起来的脚本:- Function .onSelChange
- SectionGetFlags ${secA} $1
- SectionGetFlags ${secB} $2
- StrCmp $2 1 0 +2
- SectionSetFlags ${secA} 0
- StrCmp $1 1 0 +2
- SectionSetFlags ${secB} 0
- FunctionEnd
复制代码 将此代码复制到最后一个Sectiongroupend(如果没有就是Sectionend)的后面即可。其中SecA、SecB分别改为你要定义的互斥软件的编号
案例分析:
QQ狂人DIY版的2005.10.29组件包里面有2个不同的外挂,狂人将其分别定义为Sec03和SecWG3,我们想让4.x外挂被选时3.x自动被取消,可以使用这样的代码- Function .onSelChange
- SectionGetFlags ${sec03} $1
- SectionGetFlags ${secWG3} $2
- StrCmp $2 1 0 +2
- SectionSetFlags ${sec03} 0
- StrCmp $1 1 0 +2
- SectionSetFlags ${secWG3} 0
- FunctionEnd
复制代码 因为狂人组件包里面已经有Function .onSelChange以及FunctionEnd,因此我们只需要把- SectionGetFlags ${sec03} $1
- SectionGetFlags ${secWG3} $2
- StrCmp $2 1 0 +2
- SectionSetFlags ${sec03} 0
- StrCmp $1 1 0 +2
- SectionSetFlags ${secWG3} 0
复制代码 添加到Function .onSelChange以及FunctionEnd之间,最好在FunctionEnd的上一行,就OK了 |
|