2017-10-13 74 views
1

我在Install4J-Project中定义了多个屏幕。如何在向后移动时隐藏屏幕

假定i都要求3个画面:

  • “画面1”
  • “画面2”
  • “画面3”

屏幕2是配置如下: 激活后脚本:

context.getWizardContext().setControlButtonVisible(ControlButtonType.NEXT, false); 
context.getWizardContext().setControlButtonVisible(ControlButtonType.PREVIOUS, false); 
context.goForward(1, true, true); 

当前的行为如下:

  1. 我在“屏幕1”,然后单击“下一步”
  2. Install4J跳转到“画面2”。 Postactivationscript隐藏后退和下一步按钮,并为我点击“下一步”。
  3. 我在“Screen 3”中。

这就是我到目前为止的行为。

用我当前的配置描述原样和不需要的行为。

如果我现在单击“屏幕3”中的“后退”按钮,Install4J会跳回到“屏幕2”,但Postactivationscript会立即将我弹回“屏幕3”。

我现在的问题是:

我有什么改变,得到这么下列行为? *如果我现在点击“屏幕3”中的“后退”按钮,Install4J跳过“屏幕2”并返回“屏幕1”。

所以我想在前向遍历上显示“Screen 2”并将其隐藏在Backward-Traversal上。这可能吗?

根据Install4J帮助,有像isHiddenForPrevious这样的方法似乎能够完成我的任务,但我如何以及在哪里使用它们以及如何配置“屏幕2”以在向后遍历上隐藏?

回答

1

这确实是一个很好的用例,目前还没有涵盖可配置表单。在7.0.4中,我们将添加一个“可以到达屏幕”属性,该属性可以设置为“仅限于下一个按钮”。请联系[email protected]获得已经实施的构建。

+0

我想知道为什么字段“Postactivation-Script”中的以下行阻止了Back Traversal。 context.getWizardContext()。setControlButtonVisible(ControlButtonType.NEXT,false); context.getWizardContext()。setControlButtonVisible(ControlButtonType.PREVIOUS,false); context.goForward(1,true,true); 这些行在“屏幕2”中定义。启用这些功能后,我很遗憾不能从“屏幕3”跳转到“屏幕1”,尽管我已经为“屏幕2”设置了“仅限下一个按钮”。我需要处理“屏幕2”无人看管,不能跳过它。我该怎么办? – Kaot

+1

随着目前的构建这适用于我。使用相同的脚本。请在安装后查看日志文件.install4j \ installation.log。当你回去的时候,你会在日志中看到如[INFO] com.install4j.runtime.beans.screens.FormScreen [ID 1565]中的行:命令:使用历史记录返回1个屏幕,然后跳过的屏幕不应该被激活。您是否可以在可能在较旧版本的install4j上使用的命令行版本编译该项目? –

+0

请道歉。似乎我使用了新的Install4J-GUI,但我的Buildscript使用了旧的。事实上,它现在适用于我这边的这个小例子。我会尝试将它用于真实的项目。再次感谢你的帮助! – Kaot