janjonas, в компании, в которой я работаю, у нас была похожая проблема с Windows Mobile 6.x, и мы используем почти то же решение, на которое указывает EboMike:
![enter image description here](https://i.stack.imgur.com/FTgl3.png)
Основное приложение проверяет, обновлено ли оно, с помощью WebService. Он получает текущую версию и URL-адрес, откуда скачать новую версию, если это необходимо. Затем основное приложение запускает приложение Updater, передавая URL-адрес, и завершает работу.
Updater выполняет загрузку новой программы через HTTP, показывая пользователю загруженный%. Пользователь может отменить загрузку в любое время контролируемым образом, а программа обновления может зарегистрировать это удаление.
Поскольку новое приложение загружено, Updater запустит новое приложение и выйдет.