java - 在退出 java 之前运行外部程序有时会失败

标签 java windows uac

我有一个java程序,在Windows XP到10个系统上运行,它在退出之前调用一个程序(Mover.exe)。我想要发生的是,在 java 程序退出后,Mover.exe 应该用下载的文件覆盖并更新 java 程序。

我正在使用new ProcessBuilder(progname, options).directory(tempDir).start(); 调用 Mover.exe,但它只能间歇性地工作。

当然,有些运行该程序的系统启用了 UAC,有些则没有,而且似乎 UAC 系统才是造成麻烦的原因。我不知道这是因为海拔请求的延迟还是计时/文件锁定的问题。

有没有人尝试过使用 java 创建自己的更新程序或看过有关处理此类问题的良好指南?

最佳答案

不久前,我通过生成 .cmd 批处理解决了类似的问题,该批处理等待几秒钟,然后运行该工具(在您的情况下为 Mover.exe )。

更漂亮的解决方案是,拥有一个“启动器”应用程序,它只是

  • 启动您的应用,
  • 如果以某种方式发出信号(例如特殊的 exitCode),则运行 Mover.exe
  • (几乎)永远不需要自行更新

然后您必须确保您的应用程序仅通过此启动器启动。

关于java - 在退出 java 之前运行外部程序有时会失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52592227/

相关文章:

java - 如何使用 GSON 序列化和反序列化包含 HashMap 和 Pairs 的对象

java - Tomcat Web 应用程序 - 指定 TransformerFactoryImpl 类不起作用

c++ - 在不放弃关闭按钮或系统菜单的情况下从 Windows 标题栏中删除图标?

c# - 静默安装 SQL Server 2008 服务包时抑制 UAC 帐户设置窗口

windows-7 - Win7 上的 UAC 与 Vista 不同吗?

Java - 想通过eof解析。代码只解析一次

java - 将代码从 Java 更改为 C

c# - CredentialPickerResults 调用后被跳过的代码

java - Nexus 7 与 Eclipse 的问题

installation - NSIS:安装应用程序以始终以管理员身份运行