在NSIS对话框页面中添加自定义标签,有条件地在NSIS MUI目录页面中显示和隐藏标签,如何获取标签的ID

时间:2011-04-29 12:19:00

标签: installer custom-controls nsis labels mui

如何隐藏NSIS安装程序的目录页面对话框中添加的自定义LABEL。 使用Resource Hacker添加LABEL,其ID为1300

如何有条件地更改LABEL的文本?

如果用户选择安装DEMO,那么标签文本应为“DEMO”,如果用户选择安装UPDATE,则标签文本应为“UPDATE”

我添加了2个标签,现在我隐藏并相应地显示它们.Label1 ID为1300,Label2 ID为1301。

# Occurs on Directory page show.
Function DirectoryShow

   ${If} $InstallType == DEMO

    GetDlgItem $5 $HWNDPARENT 1300
MessageBox MB_OK "ID of First Label is $5"  ----IT SHOWS '0' INSTEAD OF SHOWING 1300

 ${NSD_SetText} $5 "INSTALLING DEMO OF SOFTWARE!!!!!!!!!!!!!!!!!" 

GetDlgItem $6 $HWNDPARENT 1301
ShowWindow $6 ${SW_HIDE}

;GetDlgItem $1 $HWNDPARENT 2
;ShowWindow $0 ${SW_SHOW}
;ShowWindow $1 ${SW_HIDE}

 ${Else}

GetDlgItem $7 $HWNDPARENT 1300
ShowWindow $7 ${SW_HIDE}

GetDlgItem $8 $HWNDPARENT 1301
 ${NSD_SetText} $8 "UPDATING EXISTING SOFTWARE !!!!!!!!!!!!!!!!!" 

${EndIf}
FunctionEnd 

我如何获得这些标签的ID?

1 个答案:

答案 0 :(得分:5)

NSIS使用子对话框来托管实际页面:

enter image description here

您首先需要获取内部对话框的句柄,然后您可以找到标签:

FindWindow $0 "#32770" "" $HWNDPARENT ;(This is documented under section 4.9.14.6 in the help file)
GetDlgItem $5 $0 1300