RINCODE
@RINCODE
Я новичок, еще учусь

Как сделать авто обновление программы C# WPF?

Хочу сделать авто обновление программы на языке C# WPF, но у меня есть несколько вопросов на которые я не смог найти нормального ответа
1) Нужно ли создавать отдельный файл по типу updater.exe, который будет обновлять программу или можно внутри программы это все сделать?
2) Ну и последний как лучше всего и через что, лучше реализовать авто обновление?
  • Вопрос задан
  • 490 просмотров
Пригласить эксперта
Ответы на вопрос 2
Если нужна поддержка только Десятки и выше - можно перейти на MSIX, и обновлять приложение с помощью App Installer. Мы и сами так обновлялись, пока по ряду причин не решили заменить логику проверки и скачивания (НО не установки) обновлений на свою. При этом, мы всё равно остались на MSIX, и это позволяет нам устанавливать новую версию пакета одним вызовом UpdatePackageAsync. Если нужно, могу рассказать подробнее, что мы делаем своими силами, а где Винда сама справляется, и как вообще это работает.

Короче говоря, MSIX это хорошая база для распространения и обновления десктопных приложений, но все его игнорируют, т.к. он косвенно связан с UWP и Стором, хотя MS уже не первый год говорит, что эта технология работает и для большинства классических десктопных приложений, не имеющих к UWP никакого отношения. Но т.к. все уже испугались ужасного Стора, и бегают от него и UWP как чёрт от ладана, то бегают заодно и от MSIX, хотя поддержка Семёрки уже никому не впилась (Восьмёрку не считаем, это была бета-версия Десятки и уже перестала существовать).

Нужно ли создавать отдельный файл по типу updater.exe, который будет обновлять программу или можно внутри программы это все сделать?

Отдельный файл создают потому, что EXE-шник не может удалить сам себя, т.к. запущенный экзешник нельзя удалить или изменить без дополнительных хаков. Поэтому обычно всю работу по обновлению файлов делает отдельный процесс. Сам updater.exe потом можно обновить из основного процесса (при необходимости). В MSIX кстати этой проблемы нет, т.к. новая версия пакета всегда ставится рядом со старой, а старая удаляется позже, когда приложение завершит работу.
Ответ написан
Комментировать
vabka
@vabka
Токсичный шарпист
Уже есть готовые инструменты:
1. Autoupdaternet: https://github.com/ravibpatel/AutoUpdater.NET
2. Squirrel: https://github.com/Squirrel/Squirrel.Windows

Сам пользовался первым вариантом - работает вполне хорошо. Подводных нет
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы