2013-04-08 3 views
0

У меня есть небольшая программа, которая будет делать резервные копии некоторых важных файлов, а затем удалять программу. как только это будет сделано, он затем установит кучу новых вещей и сохранит старые файлы и настроит все. Он отлично работает, но проблема в том, что когда я запускаю программу, она просто загружает кучу инсталляторов и восстанавливает файлы резервных копий до того, как программы даже будут установлены.Сделать программу спящим до завершения задачи Windows

Я знаю, что это происходит, потому что java не несет ответственности за установку программ в его работу с окнами, но есть ли способ отложить программу, чтобы она не перешла на следующий шаг до тех пор, пока последний не завершится? я мог догадываться, сколько времени требуется для завершения шага и использовать thread.sleep(), но я хотел бы что-то более точное. Есть ли способ как-то узнать из окон, когда он закончил выполнение задачи?

+0

Вы управляете установленными программами? код, например? если нет, они оставляют значения в реестре? –

+0

программы устанавливаются и удаляются окнами, например, программой, например firefox, поэтому да, они будут содержать значение реестра. (а значит, .exists) {ничего не делать}? потому что у меня много записей в реестре для программ, которые больше не существуют на моем компьютере. –

+0

У реестра должен быть список установленных программ на самом деле ... даже пути к файлам и существование файла могут быть полезны .. например, пока ! существуют ... –

ответ

2

Если вы запустите программу установки с помощью ProcessBuilder, вы получите объект Process, который был возвращен при звонке start().

Если вы звоните waitfor() на Process, ваш поток будет ждать окончания установки.

+0

, строитель процесса не загружает деинсталлятор, который использует MsiExec.exe, поскольку значение для него, которое возвращает реестр, всегда равно нулю. так как он требует командной строки для запуска processbuilder не сделает это –

Смежные вопросы