Как реализовать самостоятельное обновление и перезапуск для неупакованного приложения 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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