!define CUST_INI "$PLUGINSDIR\custom.ini"
!include Logiclib.nsh
!include Sections.nsh
!define SEC1_TEXT "Section One" ;组件1
!define SEC2_TEXT "Section Two" ;组件2
!define SEC3_TEXT "Section Three" ;组件3
outfile "test.exe"
showinstdetails show
Installdir "$PROGRAMFILES\My App"
page custom CreateCustom ;显示自定义页面
page components func_pre ;自定义参数
page directory
page instfiles
section "${SEC1_TEXT}" sec1 ;组件1
detailprint "section 1 selected"
sectionend
section "${SEC2_TEXT}" sec2 ;组件2
detailprint "section 2 selected"
sectionend
section "${SEC3_TEXT}" sec3 ;组件3
detailprint "section 3 selected"
sectionend
Function .onInit
InitPluginsDir
WriteINIStr "${CUST_INI}" "Settings" "NumFields" "3"
WriteINIStr "${CUST_INI}" "field 1" "type" "radiobutton"
WriteINIStr "${CUST_INI}" "field 1" "left" "30"
WriteINIStr "${CUST_INI}" "field 1" "right" "-30"
WriteINIStr "${CUST_INI}" "field 1" "top" "40"
WriteINIStr "${CUST_INI}" "field 1" "bottom" "52"
WriteINIStr "${CUST_INI}" "field 1" "Text" "Unselect and hide section 1"
WriteINIStr "${CUST_INI}" "field 1" "state" "1" ;组件1 state=1
WriteINIStr "${CUST_INI}" "field 1" "flags" "GROUP"
;http://blog.163.com/53_54/
WriteINIStr "${CUST_INI}" "field 2" "type" "radiobutton"
WriteINIStr "${CUST_INI}" "field 2" "left" "30"
WriteINIStr "${CUST_INI}" "field 2" "right" "-30"
WriteINIStr "${CUST_INI}" "field 2" "top" "60"
WriteINIStr "${CUST_INI}" "field 2" "bottom" "72"
WriteINIStr "${CUST_INI}" "field 2" "Text" "Unselect and hide section 2"
WriteINIStr "${CUST_INI}" "field 2" "state" "0" ;组件2 state=0
WriteINIStr "${CUST_INI}" "field 3" "type" "radiobutton"
WriteINIStr "${CUST_INI}" "field 3" "left" "30"
WriteINIStr "${CUST_INI}" "field 3" "right" "-30"
WriteINIStr "${CUST_INI}" "field 3" "top" "80"
WriteINIStr "${CUST_INI}" "field 3" "bottom" "92"
WriteINIStr "${CUST_INI}" "field 3" "Text" "Unselect and hide section 3"
WriteINIStr "${CUST_INI}" "field 3" "state" "0" ;组件3 state=0
FunctionEnd
Function CreateCustom ;显示自定义页面
InstallOptions::Dialog "${CUST_INI}"
pop $0
FunctionEnd
Function func_pre ;自定义页面参数
ReadINIStr $0 "${CUST_INI}" "field 1" "state" ;当组件1 state=1时候
${If} $0 = 1
!insertmacro UnselectSection ${sec1} ;不显示组件1 UN
SectionSetText ${sec1} ""
!insertmacro SelectSection ${sec2} ;显示组件2
SectionSetText ${sec2} "${SEC2_TEXT}"
!insertmacro SelectSection ${sec3} ;显示组件3
SectionSetText ${sec3} "${SEC3_TEXT}"
${ElseIf} $0 = 0
ReadINIStr $1 "${CUST_INI}" "field 2" "state"
${AndIf} $1 = 1
!insertmacro UnselectSection ${sec2}
SectionSetText ${sec2} ""
!insertmacro SelectSection ${sec1}
SectionSetText ${sec1} "${SEC1_TEXT}"
!insertmacro SelectSection ${sec3}
SectionSetText ${sec3} "${SEC3_TEXT}"
${Else}
!insertmacro UnselectSection ${sec3}
SectionSetText ${sec3} ""
!insertmacro SelectSection ${sec2}
SectionSetText ${sec2} "${SEC2_TEXT}"
!insertmacro SelectSection ${sec1}
SectionSetText ${sec1} "${SEC1_TEXT}"
${EndIf}
FunctionEnd
;下端被注释部分无再次返回选择,上端拥有返回
/*
Function func_pre
GetDlgItem $R0 $HWNDPARENT 3
EnableWindow $R0 0
ReadINIStr $0 "${CUST_INI}" "field 1" "state"
${If} $0 = 1
!insertmacro UnselectSection ${sec1}
SectionSetText ${sec1} ""
${ElseIf} $0 = 0
ReadINIStr $1 "${CUST_INI}" "field 2" "state"
${AndIf} $1 = 1
!insertmacro UnselectSection ${sec2}
SectionSetText ${sec2} ""
${Else}
!insertmacro UnselectSection ${sec3}
SectionSetText ${sec3} ""
${EndIf}
FunctionEnd
© 版权声明
THE END
暂无评论内容