繁体   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