2012-06-18 1 views
0

У меня есть приложение, написанное на C# с использованием инфраструктуры XNA. Таким образом, он в основном построен как игра с Update() и Draw(), и еще одна вещь заключается в том, что это приложение предназначено для непрерывной работы без остановки.Как сделать autoupdate для приложения во время работы XNA

Дело в том, что я хочу использовать autoupdate во время работы. Под этим я подразумеваю следующее: у меня запущено приложение, и у меня есть функция, которая все время проверяет другие версии моего приложения (изменения, которые я делаю в своем приложении, и перестраивать их в новой версии)

Как я могу сделать функцию, которая обновляет другую версию, находящуюся в указанной папке. Он проверяет, содержит ли эта папка или нет zip-архив с новой версией проекта, он распаковывает его и закрывает текущее приложение и запускает новую версию приложения из данного zip-архива. Можете ли вы дать мне отправную точку для этой проблемы?

ответ

2

Я хотел бы сделать другое приложение, которое управляет, что ... как watch dog

это приложение будет проверять папку и перезагрузить главное приложение, и должны могут быть сконфигурированы, чтобы попросить перезагрузки или нет, и делать рестарт в диапазоне времени ... (¿каждый день в 12:00?)

убить процесс:

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 

Чтобы начать процесс:

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