QT c++ 프로그램 자동 업데이트 관련 질문 드립니다.
글쓴이: pogusm / 작성시간: 화, 2013/04/09 - 4:04오후
mainProgram.exe 을 실행시키면 먼저 http를 통해 업데이트가 존재하는지 체크하여
업데이트가 없다면, 계속 프로그램을 진행하고
업데이트가 존재한다면, 자신(mainProgram.exe)을 종료시키고 update.exe 를 실행시킵니다.
(질문1. 자신을 종료시키고 다른 프로그램을 실행시키는 방법이 궁금합니다)
update.exe 는 http를 통해 "newProgram.zip.exe(자동압축해제프로그램)" 파일을 다운로드 받아
1. newProgram.zip.exe 를 실행시키고
2. newProgram.zip.exe 의 실행이 종료되었음을 감지하면
3. 자신(update.exe)을 종료시키고 mainprogram.exe 를 실행시킵니다.
(질문2. newProgram.zip.exe 의 실행의 종료를 감지하는 방법이 궁금합니다)
안그래도 초보인데 오랜만에 해보려니까 막막하네요 ㅠㅠ
감사합니다.
Forums:
...
(질문2. newProgram.zip.exe 의 실행의 종료를 감지하는 방법이 궁금합니다) - 이건 QProcess::finished 으로 가능할거 같습니다.
추가질문..
(질문3. A.exe 프로그램에서 B.exe 를 실행시키고, B.exe 에서 A.exe 를 종료시키는것도 방법도 궁금합니다)
QProcess 클래스를 활용해보세요.
QProcess 클래스를 활용해보세요.
빠른 응답 감사합니다.그런데 직접 해보질 않아서
빠른 응답 감사합니다.
그런데 직접 해보질 않아서 의문이 드는데
자신을 kill 하는 명령을 내리고
그 다음줄에 다른프로그램을 실행시키는 명령을해도 되는건가요?
그리고 자신을 실행시킨 부모 프로그램을 죽이는 방법은... 가능한건가요?
(추가)
위 처럼 하니까 자신프로그램은 죽고 qprocess02.exe 은 잘 실행되네요..
(신기하네요... 나를 죽이는 명령이 먼저인데도 잘된다는게..)
QProcess::startDetached()를
QProcess::startDetached()를 찾아보세요.
더불어서 quit()은 kill하는 함수가 아닙니다. 메인 이벤트루프를 종료시키는 함수입니다.
답변감사합니다.그런데QProcess
답변감사합니다.
그런데
QProcess *myProcess = new QProcess();
myProcess->start("qprocess02.exe");
위처럼 사용하면 QProcess::startDetached 와 같은 효과가 있는거 아닌가요?
start 와 startDetached 의 정확한 차이점을 잘 모르겠습니다..
(startDetached 를 이용해서, 자신을 실행시킨 부모를 종료시키는 방법도 잘 모르겠습니다
조금 더 도움을 주시면 감사하겠습니다)
그리고
quit() 이 kill 하는 함수가 아니라면...
QApplication::quit(); 라고 자신을 종료시키는 방법 말고 다른 방법을 사용해야 하는 것인가요?
"자신을 실행시킨 부모를 종료시키는 방법"은
"자신을 실행시킨 부모를 종료시키는 방법"은 없습니다.
또한 이경우에는 필요도 없습니다. 필요하면 프로세스간 통신으로 종료하게끔 약속해서 신호를 보내면되겠죠.
start()로 실행한 프로세스는 해당 QProcess 객체가 삭제되면 비정상적으로 종료될수 있습니다.
플랫폼에 따라서도 다를듯하네요.
메인 이벤트 루프란 QApplication의 exec() 함수안을 가리킵니다.
quit()을 부르면 qApp->exec()가 종료됩니다.
그후에 어떻게 되는지는 main 함수를 어떻게 짰느냐의 문제입니다.
quit()으로 프로그램을 종료시키려면 exec() 종료후에 아무것도 안하고 main함수를 리턴하면 되겠죠.
답변 감사합니다 대략 어떻게 되는건지 이해가
답변 감사합니다
대략 어떻게 되는건지 이해가 되네요.
감사합니다.
댓글 달기