1

在我的自定义页面中,我在页面加载时禁用了下一步按钮......因为有一些后台进程需要完成,直到我们无法进入下一页。所以我使用以下代码禁用了下一个按钮。

GetDlgItem $1 $HWNDPARENT 1 
EnableWindow $1 0

但是我想在后台进程完成后启用下一个按钮。我已使用以下代码启用

GetDlgItem $1 $HWNDPARENT 1 
EnableWindow $1 1

但它没有用......请您提出我犯的错误或如何在NSIS中实现这一点?

以下是我的代码

Function StartProgressPage
    ; Set dialog text:
    !insertmacro MUI_HEADER_TEXT "$(STARTPRGDIA_TITLE)" "$(STARTPRGDIA_SUBTITLE)"

    ; Display the page:
    !insertmacro MUI_INSTALLOPTIONS_DISPLAY "StartPrgDia"

    ;Disable Next Button
    GetDlgItem $0 $HWNDPARENT 1
    EnableWindow $0 0

    nsDialogs::Create 1018
    Pop $dialog
    nsDialogs::CreateControl "msctls_progress32" \
        ${DEFAULT_STYLES}|${PBS_SMOOTH} \
        ${PB_EXSTYLE} \
        0 30 100% 10% \
        "Test" \

    Pop $hwnd
    ${NSD_CreateTimer} NSD_Timer.CallStop 10
    nsDialogs::Show
FunctionEnd

Function NSD_Timer.CallStop
    ${NSD_KillTimer} NSD_Timer.CallStop ; Kill the timer
    SendMessage $hwnd ${PBM_SETRANGE32} 0 100

    SendMessage $hwnd ${PBM_SETPOS} 25 0
    Call <Some Process>
    SendMessage $hwnd ${PBM_SETPOS} 50 0
    Call ConfPropertyChanges
    SendMessage $hwnd ${PBM_SETPOS} 100 0
    ${NSD_CreateLabel} 0 10 20% 10u Completed

    ;Enable Next Button
    GetDlgItem $0 $HWNDPARENT 1
    EnableWindow $0 1
FunctionEnd
4

1 回答 1

0

据我所知,安装程序将在此代码中等待:

!insertmacro MUI_INSTALLOPTIONS_DISPLAY "StartPrgDia"

直到用户进入下一页。您确定显示自定义页面时执行此行下面的代码吗?

你应该打电话

!insertmacro MUI_INSTALLOPTIONS_DISPLAY "StartPrgDia"

毕竟你的代码或使用这个(MUI2版本)

Function CustomPage
    !insertmacro INSTALLOPTIONS_INITDIALOG "page.ini"

    # your code here

    !insertmacro INSTALLOPTIONS_SHOW

FunctionEnd
于 2014-08-08T11:18:44.300 回答