Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java install4j Updater-重新启动后缺少cmdline参数_Java_Install4j - Fatal编程技术网

Java install4j Updater-重新启动后缺少cmdline参数

Java install4j Updater-重新启动后缺少cmdline参数,java,install4j,Java,Install4j,想象一下,基于Install4J的应用程序的安装已经完成。 假设安装的exe文件是用一些额外的命令行参数启动的。 现在更新程序启动,下载并安装新版本,然后重新启动 应用程序的exe文件,但cmdline参数已丢失/未传递到重新启动的应用程序中 有没有办法在更新后重新启动时保留这些参数 我说的是Install4J 7.0.5,在我的例子中,BGUpdater是通过API调用的(但如果它在后台自动运行,我想也是一样的) 并为下一次应用程序启动安排安装)。可执行文件将通过下载的安装程序的“Execut

想象一下,基于Install4J的应用程序的安装已经完成。 假设安装的exe文件是用一些额外的命令行参数启动的。 现在更新程序启动,下载并安装新版本,然后重新启动 应用程序的exe文件,但cmdline参数已丢失/未传递到重新启动的应用程序中

有没有办法在更新后重新启动时保留这些参数

我说的是Install4J 7.0.5,在我的例子中,BGUpdater是通过API调用的(但如果它在后台自动运行,我想也是一样的)
并为下一次应用程序启动安排安装)。

可执行文件将通过下载的安装程序的“Execute launcher”操作重新启动。该操作不知道可执行文件最初是用什么参数启动的

在应用程序中,必须保存参数,以便新安装程序可以访问它们,例如Java首选项存储中的参数。在安装程序中,您可以使用“从Java首选项存储中读取密钥”操作将参数保存到安装程序变量中,比如“lastArguments”。然后可以将“执行启动器”操作的“Arguments”属性设置为
${installer:lastArguments}


更新7.0.9+:

一种新方法

UpdateChecker.executeScheduledUpdate(
    List<String> updaterArguments, 
    boolean restartLauncher, 
    List<String> launcherArguments, 
    Runnable shutdownRunnable
) 
UpdateChecker.executeScheduledUpdate(
列表更新参数,
布尔重新启动程序,
列出参数,
可运行关闭可运行
) 
已添加,允许您在重新启动启动器时为其传递参数

但我想如果它在后台自动运行,并且 安排下一次应用程序启动的安装


否,在自动更新的情况下,当启动器重新启动时,也在7.0.9之前,始终传递启动器的原始参数。

供将来的读者阅读:从7.0.9开始,将有一个版本的
UpdateChecker.executeScheduledUpdate
接受一个参数
launcherArguments
。在这里,您可以将cmdline参数传递给启动器(感谢@Ingo在这方面帮助med!)