Я искал через google и SO для возможных ответов на этот вопрос, но могу найти только небольшие фрагменты информации, разбросанные по всему месту, большинство из которых, по-видимому, являются личным мнением.
Я знаю, что этот вопрос можно считать субъективным, но я не ищу личное мнение, а скорее факты с причинами (например, прошлый опыт) или даже единственную ссылку на блог/вики, в которых описываются лучшие практики для этого (это то, что я предпочел бы быть честным). Я не ищу, как это сделать, я знаю, как создать самообновляющееся настольное приложение.
Я хочу узнать о лучших практиках создания саморедактирующего настольного приложения. Мне особенно нравятся лучшие практики:
- Вы принудительно обновляете, если программное обеспечение клиента устарело, но не прерывается при попытке установить связь с другой версией программного обеспечения или самой базы данных? Если да, то как вы обозначаете это нарушение?
- Как часто вы должны проверять наличие обновлений? Еженедельно/ежедневно/ежечасно и точно почему?
- Должно ли обновление быть видимым для пользователя или запускаться за кулисами с точки зрения пользовательского интерфейса?
- Если вы даже уведомляете пользователя о наличии обновления, если оно не является основным обновлением? (например, исправление одной кнопки в удаленной части приложения, которое требуется только одному пользователю)
- Если вы пытаетесь исправить приложение или повторно загрузите все приложение с нуля в стиле Macintosh?
- Если вы разрешаете пользователям обновляться с центрального местоположения или разрешать обновление только через указанное приложение? (для закрытых бизнес-приложений).
Конечно, есть некоторые письменные правила/предложения по этому поводу? Одной из самых неприятных вещей во многих приложениях является обновление, так как трудно найти хороший баланс между "устаревшими" и "в глазах пользователей".
Если это поможет подумать, что это должно быть написано на .net С# для одного клиента, работающего на компьютерах с постоянной доступной связью с сервером обновлений, все эти компьютеры разговаривают друг с другом через приложение, и все также разговаривают с сервер центральной базы данных.