Пример C# shadowcopy
Мне нужно обновить мой исполняемый файл также с помощью DLL связаны..
Я читал о AppDomainSetup.ShadowCopyFiles
но я в затруднении, пытаясь сделать правильные шаги, чтобы сделать то, что мне нужно
вопрос:
- теневую копию, которую мне нужно создать только при уведомлении об обновлении или при каждом запуске моего исполняемого файла?
- Что такое правильный шаг для копирования и обновления DLL и EXE-файла?
2 ответа
Создание теневой копии не приведет к обновлению вашего приложения. Общая последовательность автообновления требует третьего приложения, которое управляет процессом. Это выглядит примерно так.
- Основное приложение находит обновления и загружает файлы обновлений во временную папку
- Основное приложение запускает приложение обновления и завершает свою работу.
- Приложение обновления копирует файлы обновления поверх основных файлов приложения
- Приложение обновления запускает основное приложение и завершает работу
Очевидно, что здесь будет встроена логика обработки ошибок. Но это общая идея. Теневые копии там нигде нет.
Использование функции теневого копирования.NET - неплохая идея. Это позволит вам обновить ваши сборки, не выходя из приложения, НО вам нужно будет перезапустить приложение, чтобы запустить обновленную версию. Теневая копия просто позволит вам перезаписать сборки и ничего больше.
Обратите внимание, что вы не можете включить теневое копирование по умолчанию AppDomain
, Это означает, что вам понадобится загрузчик, который создаст AppDomain
и выполните ваше приложение. Посмотрите на этот ответ шаги, которые вам нужно предпринять, и простую реализацию.
Если все, что вам нужно, это разрешить установку обновлений без выхода из приложения, то это самый простой подход, который я могу придумать.
Вы также должны взглянуть на технологию Microsoft ClickOnce. Он решает множество распространенных проблем развертывания и обновления приложений.NET GUI.