NSISダイアログページにカスタムラベルを追加し、NSIS MUIディレクトリページのラベルを条件付きで表示および隠し、ラベルのIDを取得する方法

StackOverflow https://stackoverflow.com/questions/5831920

質問

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は、子のダイアログを使用して実際のページをホストします。

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
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top