想象一下,基于 Install4J 的应用程序的安装已经完成。 想象一下,安装的 exe 文件是用一些额外的命令行参数启动的。 现在更新程序启动,下载并安装新版本,然后重新启动 应用程序的 exe 文件,但 cmdline 参数消失/未传递到重新启动的应用程序中。
有没有办法保留那些更新后重启的参数?
我说的是 Install4J 7.0.5,在我的例子中,BGUpdater 是通过 API 调用的(但我想如果它在后台自动运行也是一样的) 并为下一个应用程序启动安排安装)。
最佳答案
可执行文件通过下载的安装程序中的“执行启动程序”操作重新启动。该操作不知道可执行文件最初以什么参数启动。
在您的应用程序中,您必须保存参数以便新安装程序可以访问它们,例如在 Java 首选项存储中。在安装程序中,您可以使用“从 Java 首选项存储中读取 key ”操作将参数保存到安装程序变量,例如“lastArguments”。然后,您可以将“执行启动器”操作的“参数”属性设置为 ${installer:lastArguments}
。
7.0.9+ 更新:
一种新方法
UpdateChecker.executeScheduledUpdate(
List<String> updaterArguments,
boolean restartLauncher,
List<String> launcherArguments,
Runnable shutdownRunnable
)
已添加,允许您在重新启动时为启动器传递参数。
but I guess it's the same if it runs automatically in the background and schedules installation for next application start
不,在自动更新的情况下,启动器的原始参数总是在启动器重新启动时传递,在 7.0.9 之前也是如此。
关于java - install4j Updater - 重新启动后缺少 cmdline 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50429748/