내 응용 프로그램에 대한 업데이트 시스템을 작성 중이며 EXE를 덮어 쓰려면 응용 프로그램을 종료해야하지만 종료 한 후에는 업데이트 실행 파일을 실행해야합니다. 어떻게해야합니까?응용 프로그램 닫기 및 외부 응용 프로그램 실행
2
A
답변
2
Process.Start
을 사용하여 업데이터를 시작하고 메인 프로그램이 종료 될 때까지 기다릴 수 있습니까? 나는 이것이 가장 쉬운 해결책이라고 생각한다.
또는 주 응용 프로그램을 시작하기 전에 업데이트 및 업데이트를 확인할 별도의 시작 프로그램이있을 수 있습니다. 그러나 런처를 업데이트해야하는 경우에도 이와 동일한 문제가 발생합니다. 이의 라인을 따라
:
static void Main(string[] args)
{
var haveToUpdate = ...;
if (haveToUpdate)
{
Process.Start("update.exe");
Environment.Exit(0);
}
}
static void Main(string[] args)
{
var processes = Process.GetProcessesByName("program.exe");
if (processes.Length > 1)
throw new Exception("More than one program.exe running");
else if (processes.Length == 0)
Update();
else
processes[0].Exited += new EventHandler(Program_Exited);
}
static void Program_Exited(object sender, EventArgs e)
{
Update();
}
static void Update()
{
// ...
}
-2
는 응용 프로그램 종료 전에 업데이트 실행 파일을 실행합니다.
0
다른 작은 업데이트 응용 프로그램이 필요합니다. Process.Start()로 시작하면이 도우미 프로세스가 실행 파일을 대체하고 Process.Start()로 새 도우미를 다시 시작합니다.
3
역순으로 수행하십시오. 이전 응용 프로그램 (임시로 저장)을 사용하여 전체 업데이트 된 파일을 가져온 다음 프로세스 시작을 사용하여 업데이터 응용 프로그램을 시작합니다. 모든 업데이트는 새 파일을 이전 파일로 복사 한 다음 응용 프로그램을 다시 시작해야합니다.
업데이터는 액세스가 거부 된 예외를 포착하고 응용 프로그램을 복사 할 수있게 될 때까지 기다릴 수 있습니다. 복사가 완료되면 일시적으로 새 파일을 삭제하고 종료하기 전에 응용 프로그램을 다시 시작합니다.
그런 다음 필요한 경우 업데이트 프로그램을 업데이트 할 수 있습니다 (일반 응용 프로그램 사용).
관련 문제
- 1. 오류시 응용 프로그램 닫기
- 2. 응용 프로그램 닫기 문제
- 3. 닫기 Windows 응용 프로그램
- 4. 닫기 응용 프로그램
- 5. 응용 프로그램 실행 감지
- 6. 확장명이 .exe 인 외부 응용 프로그램 실행
- 7. WiX를 사용하여 응용 프로그램 닫기
- 8. android에서 전체 응용 프로그램 닫기
- 9. C# 응용 프로그램 닫기 문제
- 10. PyQt4 응용 프로그램 실행
- 11. 응용 프로그램 시작, 응용 프로그램 닫기 후 복원
- 12. 자동 실행 응용 프로그램
- 13. 실행 Java 응용 프로그램
- 14. "응용 프로그램 참조"실행
- 15. 장바구니 응용 프로그램 실행
- 16. 시작시 응용 프로그램 실행
- 17. 백그라운드에서 응용 프로그램 실행
- 18. 실행 응용 프로그램
- 19. WinCE 응용 프로그램 실행
- 20. Java 응용 프로그램에서 실행중인 프로그램 닫기
- 21. 웹 응용 프로그램 및 데스크톱 응용 프로그램
- 22. 인터넷 응용 프로그램 또는 창 응용 프로그램?
- 23. iPad : 응용 프로그램 시작시 외부 응용 프로그램 시작
- 24. 응용 프로그램 외부 데이터베이스 업데이트
- 25. 외부 응용 프로그램 메뉴 확장
- 26. 응용 프로그램 서버 내 스프링 프로그램 실행
- 27. IDE에서 신발 응용 프로그램 실행
- 28. 응용 프로그램 속성 실행 관리
- 29. android google calendar .. 응용 프로그램 닫기 close
- 30. 계산기 응용 프로그램 실행 질문
코드에 버그가 있습니다. "program.exe"라는 두 프로세스가 실행중인 경우 업데이트 할 프로세스가 종료되고 잘못된 프로세스를 기다리고 있습니다. 프로세스 이름에 따라 대기하는 것을 피할 것입니다. 두 프로세스 간의 어떤 종류의 의사 소통은 아마도 더 좋을 것입니다. –
짧은 지연과 함께 명명 된 세마포어 일 수 있습니다. 또는 실행 파일을 쓰기 위해 열 수 있는지 반복해서 확인하십시오. –
예외 부분을 놓치셨습니까? 물론보다 견고한 코드를 원할 수도 있지만 이것은 개념 일뿐입니다. – Samuel