在 Windows 上使用 JPackage 是否可以使 main .exe 不是 运行 作为控制台,而是将其他 laucher 运行 作为控制台?
With JPackage on Windows Is it possible to make main .exe not run as console, but have other laucher run as console?
使用 JPackage 我无法获得 --win-console 选项来为主启动器分开工作,但我希望主启动器不输出到控制台,但有一个调试版本可以。
即如果我 运行
jpackage --add-launcher SongKongDebug=jpackage.properties @jpackage.txt
jpackage.txt
-i C:\Code\jthink\SongKong\target\songkong-6.10
--runtime-image C:\code\jthink\songkong\JVM64
--main-class com.jthink.songkong.cmdline.SongKong
--name SongKong
--win-dir-chooser
--main-jar lib\SongKong-6.10.jar
--app-version 6.10
--install-dir Jthink\SongKong
--copyright "Copyright 2020 JThink Ltd, United Kingdom"
--license-file C:\Code\jthink\SongKong\src\main\scripts\license.txt
--java-options "-Dhttps.protocols=TLSv1.1,TLSv1.2"
--java-options "--add-opens java.base/java.lang=ALL-UNNAMED"
--java-options "-XX:MaxRAMPercentage=75.0"
--java-options "-XX:MetaspaceSize=45 "
--java-options "-Dcom.mchange.v2.log.MLog=com.mchange.v2.log.jdk14logging.Jdk14MLog"
--java-options "-Dorg.jboss.logging.provider=jdk"
--java-options "-Djava.util.logging.config.class=com.jthink.songkong.logging.StandardLogging"
--vendor JThink
--win-menu
--win-shortcut
--win-menu-group Jthink
jpackage.properties
win-console=--win-console
然后 SongKong 和 SongKongDebug 运行 没有控制台
我还尝试将 jpackage.properties(这意味着 name/value 对)修改为
--win-console
还是没用
而如果我添加
--win-console
到jpackage.txt和
win-console
到jpackage.properties
然后 SongKong 将 运行 作为控制台,而 SongKongDebug 不会,但对我来说是错误的方法。
如果我将 SongKong 重命名为 SongKongDebug 并将 SongKongDebug 重命名为 SongKong
例如
jpackage --add-launcher SongKong=jpackage.properties @jpackage.txt
并修改
set --name SongKongDebug
在jpackage.txt
然后它可以工作但是现在安装 SongKong 时它说安装 SongKongDebug 这是错误的。
我已经尝试了当前的 Java 14 版本和抢先体验 java 15 和 16 版本,但没有任何区别。
我发现报告了这个错误,但随后用户关闭它没有问题 https://bugs.openjdk.java.net/browse/JDK-8213717 我发现 jpackage 帮助有点混乱所以我想知道我是否以错误的方式做这件事。
帮助说
Options for creating the application launcher(s):
--add-launcher launcher name=file path
Name of launcher, and a path to a Properties file that contains a list of key, value pairs (absolute path or relative to the current
directory).
The keys "module", "add-modules", "main-jar", "main-class", "arguments", "java-options", "app-version", "icon", and "win-console"
can be used.
These options are added to, or used to overwrite, the original command line options to build an additional alternative launcher. The
main application launcher will be built from the command line options.
Additional alternative launchers can be built using this option, and
this option can be used multiple times to build multiple additional
launchers.
--arguments main class arguments
Command line arguments to pass to the main class if no command line arguments are given to the launcher.
This option can be used multiple times.
--java-options java options
Options to pass to the Java runtime.
This option can be used multiple times.
--main-class class name
Qualified name of the application main class to execute.
This option can only be used if --main-jar is specified.
--main-jar main jar file
The main JAR of the application; containing the main class (specified as a path relative to the input path).
Either --module or --main-jar option can be specified but not both.
--module or -m module name/main class]
The main module (and optionally main class) of the application This module must be located on the module path.
When this option is specified, the main module will be linked in the Java runtime image. Either --module or --main-jar option can be
specified but not both.
所以你可以使用 --add-launcher 创建额外的启动器并使用属性文件,但它也使你可以将额外的参数作为额外的命令行选项传递,但是这怎么可能呢不清楚他们指的是哪个启动器?
您可以使用 win-console=true
或 win-console=false
:
为每个 --add-launcher
属性 文件指定控制台选项
jpackage.properties
# This adds console for the current launcher:
win-console=true
在命令行或参数文件中 @jpackage.txt
标志 --win-console
为主应用程序和未指定 win-console=true|false
的所有 --add-launcher
文件打开控制台:
@jpackage.txt
# This adds console for all applications:
--win-console
不幸的是,jpackage 有错误 JDK-8253426,它阻止 --add-launcher
设置在 JDK15 中使用不同的 main-class=xyz
。
使用 JPackage 我无法获得 --win-console 选项来为主启动器分开工作,但我希望主启动器不输出到控制台,但有一个调试版本可以。
即如果我 运行
jpackage --add-launcher SongKongDebug=jpackage.properties @jpackage.txt
jpackage.txt
-i C:\Code\jthink\SongKong\target\songkong-6.10
--runtime-image C:\code\jthink\songkong\JVM64
--main-class com.jthink.songkong.cmdline.SongKong
--name SongKong
--win-dir-chooser
--main-jar lib\SongKong-6.10.jar
--app-version 6.10
--install-dir Jthink\SongKong
--copyright "Copyright 2020 JThink Ltd, United Kingdom"
--license-file C:\Code\jthink\SongKong\src\main\scripts\license.txt
--java-options "-Dhttps.protocols=TLSv1.1,TLSv1.2"
--java-options "--add-opens java.base/java.lang=ALL-UNNAMED"
--java-options "-XX:MaxRAMPercentage=75.0"
--java-options "-XX:MetaspaceSize=45 "
--java-options "-Dcom.mchange.v2.log.MLog=com.mchange.v2.log.jdk14logging.Jdk14MLog"
--java-options "-Dorg.jboss.logging.provider=jdk"
--java-options "-Djava.util.logging.config.class=com.jthink.songkong.logging.StandardLogging"
--vendor JThink
--win-menu
--win-shortcut
--win-menu-group Jthink
jpackage.properties
win-console=--win-console
然后 SongKong 和 SongKongDebug 运行 没有控制台
我还尝试将 jpackage.properties(这意味着 name/value 对)修改为
--win-console
还是没用
而如果我添加
--win-console
到jpackage.txt和
win-console
到jpackage.properties
然后 SongKong 将 运行 作为控制台,而 SongKongDebug 不会,但对我来说是错误的方法。
如果我将 SongKong 重命名为 SongKongDebug 并将 SongKongDebug 重命名为 SongKong
例如
jpackage --add-launcher SongKong=jpackage.properties @jpackage.txt
并修改
set --name SongKongDebug
在jpackage.txt
然后它可以工作但是现在安装 SongKong 时它说安装 SongKongDebug 这是错误的。
我已经尝试了当前的 Java 14 版本和抢先体验 java 15 和 16 版本,但没有任何区别。
我发现报告了这个错误,但随后用户关闭它没有问题 https://bugs.openjdk.java.net/browse/JDK-8213717 我发现 jpackage 帮助有点混乱所以我想知道我是否以错误的方式做这件事。
帮助说
Options for creating the application launcher(s):
--add-launcher launcher name=file path
Name of launcher, and a path to a Properties file that contains a list of key, value pairs (absolute path or relative to the current
directory).
The keys "module", "add-modules", "main-jar", "main-class", "arguments", "java-options", "app-version", "icon", and "win-console"
can be used.
These options are added to, or used to overwrite, the original command line options to build an additional alternative launcher. The
main application launcher will be built from the command line options. Additional alternative launchers can be built using this option, and this option can be used multiple times to build multiple additional launchers. --arguments main class arguments
Command line arguments to pass to the main class if no command line arguments are given to the launcher. This option can be used multiple times.
--java-options java options
Options to pass to the Java runtime. This option can be used multiple times.
--main-class class name
Qualified name of the application main class to execute. This option can only be used if --main-jar is specified.
--main-jar main jar file
The main JAR of the application; containing the main class (specified as a path relative to the input path). Either --module or --main-jar option can be specified but not both.
--module or -m module name/main class]
The main module (and optionally main class) of the application This module must be located on the module path. When this option is specified, the main module will be linked in the Java runtime image. Either --module or --main-jar option can be
specified but not both.
所以你可以使用 --add-launcher 创建额外的启动器并使用属性文件,但它也使你可以将额外的参数作为额外的命令行选项传递,但是这怎么可能呢不清楚他们指的是哪个启动器?
您可以使用 win-console=true
或 win-console=false
:
--add-launcher
属性 文件指定控制台选项
jpackage.properties
# This adds console for the current launcher:
win-console=true
在命令行或参数文件中 @jpackage.txt
标志 --win-console
为主应用程序和未指定 win-console=true|false
的所有 --add-launcher
文件打开控制台:
@jpackage.txt
# This adds console for all applications:
--win-console
不幸的是,jpackage 有错误 JDK-8253426,它阻止 --add-launcher
设置在 JDK15 中使用不同的 main-class=xyz
。