NSISダイアログページにカスタムラベルを追加し、NSIS MUIディレクトリページのラベルを条件付きで表示および隠し、ラベルのIDを取得する方法
-
27-10-2019 - |
質問
NSISインストーラーのディレクトリページダイアログに追加されたカスタムラベルを非表示にする方法。ラベルはリソースハッカーを使用して追加され、そのIDは1300です
ラベルのテキストを条件付きで変更する方法は?
ユーザーがデモをインストールすることを選択した場合、ラベルテキストは「デモ」になり、ユーザーが更新をインストールすることを選択した場合、ラベルテキストは「更新」にする必要があります。
2つのラベルを追加しましたが、今では隠してそれに応じて表示しています。Label1IDは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を取得するにはどうすればよいですか?
解決
NSISは、子のダイアログを使用して実際のページをホストします。
最初にハンドルを内側のダイアログに取得する必要があります。次に、ラベルを見つけることができます。
FindWindow $0 "#32770" "" $HWNDPARENT ;(This is documented under section 4.9.14.6 in the help file)
GetDlgItem $5 $0 1300
所属していません StackOverflow