【问题标题】:Suppress GUI Mode in install4j for Linux Installer While Allowing GUI Mode for Windows Installer禁止 Linux 安装程序的 install4j 中的 GUI 模式,同时允许 Windows 安装程序的 GUI 模式
【发布时间】:2020-08-24 21:21:24
【问题描述】:

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

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

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

【问题讨论】:

    标签: install4j


    【解决方案1】:

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

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

    并将其“Failure strategy”属性设置为“Quit on Failure”,并将其“Error message”属性设置为“GUI mode not allowed”或类似内容。

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

    ${compiler:executionMode}
    

    然后,在“General Settings->Compiler Variables”上定义一个名为“executionMode”的编译器变量,其值为“GUI”。在 Linux 媒体文件的媒体向导中,进入“Customize project defaults->Compiler Variables”步骤,并用值“CONSOLE”覆盖“executionMode”编译器变量。

    那么您的用户不必在 Linux 上将 -c 作为参数传递。


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

    【讨论】:

    • 感谢 Ingo,执行模式属性听起来很有希望。我们计划通知我们的客户使用 -c。
    • 我尝试按照编译器变量的描述设置执行模式。从 String 到 com.install4j.runtime.beans.applications.ExecutionMode 的转换似乎有问题。我们使用的是 install4j 版本 8.0.1。这是例外:´java.lang.RuntimeException:替换值“${compiler:executionMode}”无法在´ 转换为结果类型 com.install4j.runtime.beans.applications.ExecutionMode
    • 此属性的编译器变量替换确实存在错误。请联系 support@ej-technologies.com 以获取已修复此问题的构建。
    • 谢谢。我们将等待 8.0.9。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多