Java 使程序休眠,直到windows任务完成

Java 使程序休眠,直到windows任务完成,java,eclipse,Java,Eclipse,我有一个小程序,将备份一些重要的文件,然后卸载一个程序。完成后,它将安装一堆新东西,备份旧文件并配置所有内容。它工作得很好,但问题是当我运行程序时,它只是加载了一堆安装程序,并在程序安装之前恢复备份文件 我知道发生这种情况是因为java不负责安装其windows作业中的程序,但有没有办法延迟程序,使其在最后1步完成之前不会进入下一步?我可以大致猜出完成一个步骤并使用thread.sleep()需要多长时间,但我想知道更准确的情况。是否有办法从windows中找出它何时完成了任务?如果使用Proc

我有一个小程序,将备份一些重要的文件,然后卸载一个程序。完成后,它将安装一堆新东西,备份旧文件并配置所有内容。它工作得很好,但问题是当我运行程序时,它只是加载了一堆安装程序,并在程序安装之前恢复备份文件


我知道发生这种情况是因为java不负责安装其windows作业中的程序,但有没有办法延迟程序,使其在最后1步完成之前不会进入下一步?我可以大致猜出完成一个步骤并使用thread.sleep()需要多长时间,但我想知道更准确的情况。是否有办法从windows中找出它何时完成了任务?

如果使用
ProcessBuilder
启动安装程序,则调用
start()
时会返回
进程
对象


如果随后调用
进程
,线程将等待安装程序完成。

您是否控制已安装的程序?代码,例如。?如果没有,它们会在注册表中保留值吗?这些程序是由windows安装和卸载的,例如像firefox这样的程序,因此是的,它们将包含注册表值。一段时间(.exists){什么都不做}行吗?因为我有很多程序的注册表项,这些程序在我的pcregistry上已经不存在了,所以注册表应该有一个已安装程序的列表。。。甚至文件路径和文件存在性也可能有用。。好久不见!存在…您的Java程序是启动Windows安装程序还是从外部启动安装程序?安装程序是通过Windows命令行启动的。java代码将打开cmd insert命令,然后关闭它。然后加载卸载程序。因此java代码永远不会知道安装何时完成,因为它无法控制它们,但我想windows可能会在安装完成时输出某种消息,代码可以监听,因为process builder不会加载使用MsiExec.exe的卸载程序,因为注册表返回的值始终为空。因为它需要命令行来运行processbuilder,所以它不会这样做