2013-04-08 3 views
0

중요한 파일을 백업하고 프로그램을 제거하는 작은 프로그램이 있습니다. 일단 완료되면 새로운 자료를 설치하고 이전 파일을 백업하고 모든 것을 구성합니다. 그것은 잘 작동하지만 문제는 내가 설치 프로그램의 무리를로드하고 프로그램이 설치되기 전에 백업 파일을 복원 프로그램을 실행할 때입니다.Windows 작업이 완료 될 때까지 프로그램을 잠자기 상태로 만듭니다.

자바가 프로그램 설치를 책임지지 않기 때문에 일어난다는 것을 알고 있지만 프로그램을 지연시켜 마지막 단계가 완료 될 때까지 다음 단계로 넘어갈 방법이 없습니까? 단계를 완료하고 thread.sleep()을 사용하는 데 걸리는 시간을 대략 추측 할 수 있지만 좀 더 정확한 것을 원합니다. 작업을 마쳤을 때 어떻게 든 창에서 찾을 수있는 방법이 있습니까?

+0

설치된 프로그램을 제어합니까? 코드 예 : 그렇지 않다면 레지스트리에 값을 남겨 두는가? –

+0

프로그램은 firefox와 같은 프로그램과 같이 Windows에서 설치 및 제거되므로 예를 들어 레지스트리 값이 포함됩니다. 잠시 ( .exists) {do nothing} 작동합니까? 왜냐하면 나는 더 이상 내 컴퓨터에 존재하는 프로그램에 대한 레지스트리 항목이 많기 때문에 –

+0

레지스트리에 실제로 설치된 프로그램의 목록이 있어야합니다 ... 심지어 파일 경로 및 파일 존재가 유용 할 수 있습니다 ... 같은 동안 ... 존재하는 ... –

답변

2

ProcessBuilder을 사용하여 설치 프로그램을 시작하면 start()을 호출 할 때 Process 개체가 반환됩니다.

그러면 Process에서 waitfor()을 호출하면 설치 프로그램이 완료 될 때까지 스레드가 대기합니다.

+0

프로세스 빌더는 제거 프로그램을로드하지 않을 것이다. 레지스트리에서 반환하는 값은 항상 null이므로 MsiExec.exe가 사용됩니다. 프로세스 빌더를 실행하기 위해 커맨드 라인을 요구하기 때문에 그렇게하지 않을 것입니다. –

관련 문제