Пример C# shadowcopy

Мне нужно обновить мой исполняемый файл также с помощью DLL связаны..

Я читал о AppDomainSetup.ShadowCopyFiles но я в затруднении, пытаясь сделать правильные шаги, чтобы сделать то, что мне нужно

вопрос:

  • теневую копию, которую мне нужно создать только при уведомлении об обновлении или при каждом запуске моего исполняемого файла?
  • Что такое правильный шаг для копирования и обновления DLL и EXE-файла?

2 ответа

Решение

Создание теневой копии не приведет к обновлению вашего приложения. Общая последовательность автообновления требует третьего приложения, которое управляет процессом. Это выглядит примерно так.

  1. Основное приложение находит обновления и загружает файлы обновлений во временную папку
  2. Основное приложение запускает приложение обновления и завершает свою работу.
  3. Приложение обновления копирует файлы обновления поверх основных файлов приложения
  4. Приложение обновления запускает основное приложение и завершает работу

Очевидно, что здесь будет встроена логика обработки ошибок. Но это общая идея. Теневые копии там нигде нет.

Использование функции теневого копирования.NET - неплохая идея. Это позволит вам обновить ваши сборки, не выходя из приложения, НО вам нужно будет перезапустить приложение, чтобы запустить обновленную версию. Теневая копия просто позволит вам перезаписать сборки и ничего больше.

Обратите внимание, что вы не можете включить теневое копирование по умолчанию AppDomain, Это означает, что вам понадобится загрузчик, который создаст AppDomainи выполните ваше приложение. Посмотрите на этот ответ шаги, которые вам нужно предпринять, и простую реализацию.

Если все, что вам нужно, это разрешить установку обновлений без выхода из приложения, то это самый простой подход, который я могу придумать.

Вы также должны взглянуть на технологию Microsoft ClickOnce. Он решает множество распространенных проблем развертывания и обновления приложений.NET GUI.

Другие вопросы по тегам