【问题标题】:NSIS- How can I dynamically show a particular custom page?NSIS-如何动态显示特定的自定义页面?
【发布时间】:2009-12-29 02:19:29
【问题描述】:

我的第一个页面包含 2 个单选按钮:1 个用于安装,另一个用于升级。根据用户选择,我必须显示用于安装或升级的自定义页面。我该怎么做?

【问题讨论】:

  • 刚刚添加了另一种方法,没有使用RelGotoPage函数。

标签: dynamic radio-button nsis


【解决方案1】:

如果您在自定义页面的创建函数回调中调用abort,该页面将被跳过:

Function MyPage
${If} $somevar == "something"
Abort
${EndIf}
;Show page with nsDialogs or InstallOptions here...
FunctionEnd

page custom MyPage

【讨论】:

    【解决方案2】:

    我还没有直接测试它(我很快就会测试,因为我的 onw NSIS 脚本将需要该功能),但也许 the function RelGotoPage 可以满足您的需求。

    该函数使NSIS相对于当前页面跳转到指定页面。
    仅用于:

    • 正常功能,
    • .onUserAbort”回调函数(无 MUI)或
    • !define MUI_CUSTOMFUNCTION_ABORT“函数”(带 MUI)

    此功能还允许InstallOptionsInstallOptionsEx 使用其功能,因此您可以选择哪些控件将代替默认的 NSIS 按钮。


    注意:this thread 建议使用不同的方法:

    您应该尽量避免使用RelGotoPage,因为当用户单击返回按钮时,他们仍会看到该页面。
    相反,您应该做的是在页面的前置函数和自定义页面的show 函数中调用Abort,如果某个条件设置为跳过它们。

    因此,通过根据您的按钮设置适当的变量,您可以跳过不想显示的页面,并在相关页面停止。

    参见 NSIS 手册的Callback section

    每个内置页面都有三个回调函数:pre-function、show-creation function和leave-function。

    • 在页面创建之前调用前置函数,
    • show-function 在它被创建之后和显示之前被调用
    • 离开函数在用户按下下一个按钮之后和页面离开之前被调用。

    还有:

    • 前置功能允许您使用 Abort 跳过页面。
    • 显示功能允许您使用CreateFontSetCtlColorsSendMessage 等调整页面的用户界面。
    • 离开功能允许您使用 Abort 强制用户停留在当前页面上。

    【讨论】:

      猜你喜欢
      • 2021-04-21
      • 1970-01-01
      • 1970-01-01
      • 2023-03-29
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多