Как реализовать самостоятельное обновление и перезапуск для неупакованного приложения WinUI 3C#

Место общения программистов C#
Anonymous
Как реализовать самостоятельное обновление и перезапуск для неупакованного приложения WinUI 3

Сообщение Anonymous »

У меня есть неупакованное настольное приложение Windows App SDK, и я занят (повторной) реализацией самостоятельного обновления. Изучаем доступные способы реализации.
Я знаю об API перезапуска, но понятия не имею, как связать его с простым самообновлением приложения?
Например, у меня есть ZIP-файл с файлами приложения на HTTP-сервере CDN. Приложение проверило наличие обновлений и загрузило файл на диск. Затем я хочу извлечь его, перезаписав файлы приложения, но хорошо известно, что это невозможно во время работы приложения.
Известный обходной путь — размещение файлов приложения в подпапке, например, с именем "Версия приложения".

Код: Выделить всё

rootAppFolder/
|-currentVersionFiles/
|-newVersionFiles/
|-appLauncher.exe

Код: Выделить всё

appLauncher
— это несколько строк кода, которые просто выполняют Process.Start исполняемого файла приложения из папки currentVersion. Последовательность действий: приложение извлекает новые файлы в каталог новой версии, заменяя appLauncher, который нацелен на новые файлы, запускает его и завершает работу. Затем appLauncher ждет закрытия старого приложения и запускает новое, одновременно очищая старые файлы. API перезапуска не используется, поскольку здесь он неприменим. Минусом этого способа является то, что для выполнения обновления требуется двойное дисковое пространство.
Есть ли способ обновить приложение в той же папке с помощью новых API-интерфейсов Windows App SDK/WinRT? Я думаю, это возможно с помощью самой Windows для упакованных приложений, но как насчет неупакованных приложений?

Подробнее здесь: https://stackoverflow.com/questions/798 ... inui-3-app

Вернуться в «C#»