在允许Windows Installer的GUI模式的同时取消install4j for Linux Installer的GUI模式

问题描述

我们正在使用install4j为我们的应用程序生成Windows和Linux安装程序。我们希望用户在Windows上使用GUI模式进行安装,在Linux上使用控制台模式进行安装。

我知道,这是通过将-c参数传递给安装程序来实现的。但是我也想抑制Linux使用GUI模式。与安装程序设置中的“在Windows上禁用控制台模式”选项类似。有没有我看到的东西可以实现这种行为?

如果没有抑制这种情况的选项,我们将向安装程序添加一个操作,以退出从Linux启动且处于GUI模式的退出程序。

解决方法

从install4j 8.0.8开始,无法禁止GUI模式,实际上您必须在脚本中添加“运行脚本”操作

!(Util.isLinux() && context.isGui())

并将其“失败策略”属性设置为“失败时退出”,并将其“错误消息”属性设置为“不允许GUI模式”或类似的内容。

安装程序上还有一个“默认执行模式”属性,您可以右键单击它,从上下文菜单中选择“切换到文本模式”,并将文本字段设置为

${compiler:executionMode}

然后,在“常规设置->编译器变量”上定义一个名为“ executionMode”的编译器变量,其值为“ GUI”。在Linux媒体文件的媒体向导中,转到“自定义项目默认值->编译器变量”步骤,并用值“ CONSOLE”覆盖“ executionMode”编译器变量。

然后,您的用户不必在Linux上将-c作为参数传递。


更新:从8.0.8版开始,install4j中存在一个错误,该错误阻止替换该属性的编译器变量。它将在8.0.9中修复。