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 に答える