我在NSIS脚本中有以下代码......
!define MUI_LICENSEPAGE_CHECKBOX
!insertmacro MUI_PAGE_LICENSE "eula.txt"
......它运作正常。正如预期的那样,用户需要选中“我接受...”checkbox
,然后启用安装button
。
我想简化流程,以便检查checkbox
并默认启用安装button
,并且所有用户需要做的就是安装或取消。
谢谢大家。
答案 0 :(得分:2)
!define MUI_LICENSEPAGE_CHECKBOX ; Tell MUI you want the checkbox version of the license page
!define MUI_PAGE_CUSTOMFUNCTION_SHOW licshow ; Tell MUI to call a function before the page is displayed
!insertmacro MUI_PAGE_LICENSE "eula.txt" ; Adds the page
Function licshow ; Function to be called before the page is displayed
; Check it
FindWindow $0 "#32770" "" $HWNDPARENT ; Find the inner dialog (See attached picture)
GetDlgItem $0 $0 0x40A ; Find the checkbox control
SendMessage $0 ${BM_SETCHECK} 1 0 ; Check the checkbox
; Enable button
GetDlgItem $0 $hwndparent 1 ; Find the Install/Next button
EnableWindow $0 1 ; Enable the button
FunctionEnd
最后一个GetDlgItem + EnableWindow命令可以被SendMessage $HWNDPARENT ${WM_COMMAND} 0x40A 0
替换,以模拟用户点击并导致NSIS内部处理启用该按钮。
答案 1 :(得分:0)
我很幸运,能够从几个地方一起抛出代码。
以下作品,但我不知道为什么NSIS明智,我根本不喜欢。如果有人可以将其分解,我真的非常感谢它。
!define MUI_LICENSEPAGE_CHECKBOX
!define MUI_PAGE_CUSTOMFUNCTION_SHOW licshow
!insertmacro MUI_PAGE_LICENSE "eula.txt"
Function licshow
; Check it
FindWindow $0 "#32770" "" $HWNDPARENT
GetDlgItem $0 $0 0x40A
SendMessage $0 ${BM_SETCHECK} 1 0
; Enable button
GetDlgItem $0 $hwndparent 1
EnableWindow $0 1
FunctionEnd