С точки зрения кода мне нравится иметь подход, который состоит из простого интерфейса, называемого IRun, и другого, называемого IUpdated:
public interface IRun()
{
public void Run();
}
public interface IUpdated()
{
public void Update();
}
Теперь мое основное приложение просто загрузит и «запустит» библиотеку, используя отражение, которое, в свою очередь, запустит реальное приложение.
Основной исполняемый файл приложения выполнит следующие действия:
- Считайте файл Updater.cfg, подключитесь к указанному местоположению и проверьте наличие обновлений для средства обновления .
- Если есть обновления, загрузите обновленные dll и updater.cfg
- Используя отражение, загрузите updater.dll и запустите метод Update ().
Метод обновления выполняет те же действия для обновления фактического приложения.
Наконец
- Загрузите "core.dll" и запустите метод Run ().
Это, конечно, при условии, что вы хотите "сделать это самостоятельно", ClickOnce на самом деле тоже очень хороший метод, возможно, лучше, но дает вам меньше контроля. Основной исполняемый файл приложения достаточно прост, чтобы избежать необходимости его обновления или должен быть в любом случае.