2012-06-18 2 views
0

XNA 프레임 워크를 사용하여 C#으로 작성된 응용 프로그램이 있습니다. 따라서 기본적으로 Update()Draw()을 사용하는 게임으로 제작되었으며, 또 다른 점은이 응용 프로그램이 멈추지 않고 계속 실행된다는 것입니다.XNA를 실행하는 동안 응용 프로그램에 대한 자동 업데이트를 수행하는 방법

내가 실행하는 동안 자동 업데이트를하고 싶다는 것이 있습니다. 이 말은 다음과 같은 의미입니다. 응용 프로그램을 실행하고 있고 다른 응용 프로그램 버전 (응용 프로그램에 대한 변경 사항과 새 릴리스 버전에서의 변경 내용)을 항상 확인하는 기능이 있습니다.

지정된 폴더 내에있는 다른 버전으로 업데이트하는 기능을 어떻게 만들 수 있습니까? 해당 폴더에 프로젝트의 새 릴리스가있는 zip 아카이브가 포함되어 있는지 여부를 확인하고 압축을 풀어 현재 응용 프로그램을 종료하고 지정된 zip 아카이브에서 새 버전의 응용 프로그램을 시작합니다. 이 문제의 출발점을 알려주시겠습니까?

답변

2

나는이 응용 프로그램 폴더를 확인하고 주요 애플 리케이션, 를 다시 시작하고 다시 시작 여부를 요청하도록 구성 할 수 있어야하고에하는 watch dog

처럼 ... 것을 관리하는 다른 응용 프로그램을 할 거라고

:

Process []pArry = Process.GetProcesses(); 

foreach(Process p in pArry) 
{  
    if (p.ProcessName.CompareTo("yourapp") ==0) 
    { 
     p.Kill(); 
     break; 
    } 
} 
p.WaitForExit(); // This is blocking so be careful, maybe it should be run in other thread 

는 프로세스를 시작하려면 : (오후 12시에서 ¿ 매일?) 시간 범위에서 다시 시작 ... 않는

는 프로세스를 죽일 당신은 당신의 응용 프로그램의 흐름이되어야한다고 알고 있어야

Process.Start(path); 

:

1. Is a good time to patch the app? 
    1.1 NO-> Sleep for some time to recheck (¿12h?) and goto 1 
    2. Is there a new path? 
    2.1 NO-> Goto 1.1 
    3. Kill the main process 
    4. Apply the patch 
    5. Restart app 
    6. Goto 1 
+0

당신이 나에게 응용 프로그램의 종류에 대한 링크를 제공시겠습니까, 개를보고? 아니면 무엇부터 시작해야할까요? 그리고 또 다른 질문은 내가 현재 애플 리케이션을 중지하고 애플 리케이션의 새로운 인스턴스를 시작할 수 있지만 내가 질문 본문에서 언급 한 주어진 보관 파일에있는 하나를 사용하여 있습니다. 이것이 가능한가? – Simon

+0

주 프로세스를 죽이는 것은 다소 어렵습니다. 적절한 IPC 메커니즘을 사용하여 정상적으로 종료하도록 요청하고 합리적인 시간 단위로 응답하지 않으면 kill 코드 만 사용하는 것이 좋습니다. –

+0

예 ... 역시 udp 소켓을 통해 수행 할 수 있습니다. – Blau

관련 문제