簡體   English   中英

動態添加自定義頁面(在運行時)

[英]Adding a custom page dynamically (at runtime)

我正在使用NSIS安裝程序腳本語言編寫安裝腳本。 我可以輕松加載一些自定義頁面,但我想知道是否可以動態插入頁面。 我想要做的是在其頁面上具有其他配置選項,並且在底部具有一個復選框,上面顯示“添加更多設置”或類似內容。 如果選中此復選框,它將顯示另一個自定義頁面,該頁面與第一個頁面完全相同。 只要用戶一直選中該復選框,就應該顯示更多頁面。 是否有一些方法可以反復循環使用同一頁面? 我真的不認為我需要生成一個全新的頁面,因為它一次又一次地是同一頁面,但是我不確定如何在運行時顯示同一頁面的新實例。 快速的Google搜索和stackoverflow搜索沒有任何結果。

多謝你們。

頁數在編譯時是固定的。

如果您需要不同的“隱藏”頁面或同一頁面的幾個實例,我會說您應該在頁面的創建回調中需要時通過調用abort來跳過頁面,但是如果頁面計數,這將不起作用是無限的。

也可以直接轉到頁面:

Outfile test.exe
Requestexecutionlevel user

!include nsDialogs.nsh

Page Custom mypagecreate mypageleave
Page Directory dirpagecreate
Page Instfiles

Function mypagecreate
Var /Global MyCheckBox
nsDialogs::Create /NOUNLOAD 1018
Pop $0
${NSD_CreateCheckBox} 10% 20u 80% 12u "Again?"
Pop $MyCheckBox
nsDialogs::Show
FunctionEnd

Function mypageleave
${NSD_GetState} $MyCheckBox $0
StrCpy $MyCheckBox $0 ; This is a bit of a hack, we reuse the HWND var to store the state
FunctionEnd

Function dirpagecreate
${If} $MyCheckBox <> 0 ; Was the checkbox checked?
    SendMessage $HWNDPARENT 0x408 -1 "" ; If so, go back
${EndIf}
FunctionEnd

Section
SectionEnd
page custom page1 option
page instfiles

Function page1
initpluginsdir
file /oname=$PLUGINSDIR\dlg.ini dlg.ini
installoptions::dialog "$PLUGINSDIR\dlg.ini"
FunctionEnd

Function Options
ReadINIStr $0 "$PLUGINSDIR\dlg.ini" "Field 1" "State" # Field Must have value 0 or 1. Maybe Text or Chechbox
StrCmp $0 0 0 +2
abort
FunctionEnd

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM