Это философский вопрос.
Учитывая гипотетическое настольное приложение и желание предоставлять автоматические обновления (вместо того, чтобы заставлять людей заходить на веб-сайт, проверять наличие обновлений, загружать обновления, устанавливать), какой из этих двух подходов является более подходящим?
Как и iTunes , он проверяет, есть ли новая версия, и предлагает пользователю загрузить новую версию. Если это так, он загружает исполняемый файл полной установки (в данном случае, файл установщика Windows (.msi)), который устанавливает полную версию (не просто обновление до предыдущей версии - слишком много, чтобы управлять, если существует несколько версий) , Итак, скажем, это версия 10.1.1 - независимо от того, устанавливаете ли вы новую или обновляете, вы используете один и тот же файл. После загрузки он инструктирует пользователя закрыть приложение и запустить файл установки самостоятельно.
Подобно другой, он проверяет наличие новой версии и предлагает пользователю загрузить ее, но вместо того, чтобы просто загрузить исполняемый файл и предложить пользователю запустить его, он фактически запускает его для них - закрывает открытую программу, получает необходимая безопасность для установки файлов.
Проблемы с # 2: много проблем, связанных с закрытием программы, так как программа может открывать другие программы ( Outlook и Excel ), или что, если пользователь был в середине чего-то. Кроме того, для обеспечения безопасности вам необходим доступ локального администратора для установки, что если у вас его нет? В более поздних версиях Windows вы не можете просто переопределить безопасность человека.
Проблемы с # 1: некоторые люди считают, что это будет слишком сложно, слишком много усилий для конечного пользователя.
Я бы предпочел пойти с № 1, потому что это сэкономит 80-120 часов на моем проекте, и его проще внедрить и поддерживать. Тем не менее, у нас есть люди, которые испытывают сильные чувства со всех сторон.
Какова лучшая практика для такого рода вещей?
источник
Ответы:
Лично мне скорее нравится подход Google Chrome. Базовый каталог с лаунчером и подкаталогами для каждой установленной версии программного обеспечения. Средство запуска просто ищет самый большой номер версии, использует его и удаляет старые версии по мере необходимости. Время от времени задача обновления запускается для загрузки и создания новых каталогов. Когда новые версии установлены, работающее приложение запрашивает перезапуск, чтобы использовать новую версию.
источник
Не следует создавать ненужные записи автозагрузки для проверки обновлений, таких как Adobe Flash Player (их сложно отследить, и я не могу найти способ отключить проверки ...) или iTunes. Это раздражает пользователя (гиков, в любом случае). Лучшим вариантом будет проверка обновлений при запуске приложения, как это делает Firefox .
Простое ненавязчивое "Установить обновления?" окно не будет раздражать пользователей. Пусть он обновляется в фоновом режиме, пока пользователь выполняет другие действия, а затем автоматически запускает ваше приложение.
Только обязательно включите опцию:
Или что-то подобное.
Если это стоит усилий, я бы сказал, пойти на это. Это ваше решение.
источник
Я думаю, что вы хотите "ClickOnce" настройки.
http://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx
ClickOnce - это технология развертывания, которая позволяет создавать самообновляющиеся приложения для Windows, которые можно устанавливать и запускать с минимальным взаимодействием с пользователем. Развертывание ClickOnce устраняет три основные проблемы в развертывании:
Сложности в обновлении приложений. При развертывании установщика Microsoft Windows при каждом обновлении приложения пользователь должен переустанавливать все приложение; с развертыванием ClickOnce вы можете предоставлять обновления автоматически. Загружаются только те части приложения, которые были изменены, а затем полностью обновленное приложение переустанавливается из новой параллельной папки.
Воздействие на компьютер пользователя. При развертывании установщика Windows приложения часто полагаются на общие компоненты, что может привести к конфликтам версий; при развертывании ClickOnce каждое приложение является автономным и не может создавать помехи другим приложениям.
Разрешения безопасности. Развертывание установщика Windows требует административных разрешений и допускает только ограниченную установку пользователя; Развертывание ClickOnce позволяет пользователям без прав администратора устанавливать и предоставлять только те разрешения Code Access Security, которые необходимы для приложения.
источник
Я лично оценил приложения, которые делают что-то похожее на платформу Sparkle . Я предполагаю, что это только Mac, но по сути он делает следующее (вне головы - я предполагаю, что поведение можно отрегулировать).
Учитывая, что вы говорите о .msi, этот конкретный фреймворк на самом деле не применим, но в этом случае я бы предпочел использовать какое-то существующее решение, чем заново изобретать колесо.
источник
Я бы сказал, что вы действительно должны знать своего пользователя. Если они сообразительны и или очень заинтересованы в том, чтобы идти в ногу со временем, # 1 сработает.
Никогда не стоит недооценивать лень пользователя, потому что когда его программа больше не работает, потому что он больше не поддерживается, вы будете наводнены звонками в службу поддержки позже.
Время придет либо от разработки (# 2), либо от поддержки (# 1).
источник
Что насчет этого?
Вам не нужно беспокоить пользователя, вам не нужно ничего закрывать ...
источник
Почему не что-то посередине?
Запрашивать загрузку (или сделать опцию «загрузить автоматически»), после окончания подсказки установить загруженное обновление (выполнить MSI-файл). Таким образом, вы сводите на нет недостаток # 2 (закрытие в середине работы пользователя) и при этом сохраняете комфорт за счет еще одного клика.
Диалог « Закрыть и установить обновление? » Должен быть легкодоступным (но не раздражающим), когда пользователь сначала отказывается. Имея "Launch <имя программы>?" флажок в конце .msi будет почти как # 2 с не очень больше работы
@ security
Программы в современной Windows могут запрашивать разрешение на выполнение действий, требующих прав администратора (пользователю отображается приглашение, где он вводит пароль администратора, а затем выбирает «да / нет», предоставлять ли разрешение).
источник
У меня есть 124 Ломбарда, которые используют мое настольное приложение Pawnshop Management. Всякий раз, когда у меня появляется новое обновление, я рассылаю им по электронной почте сообщение, информирующее об этом обновлении и его деталях. Затем у них есть возможность отправить его по FTP, зайдя на мой сайт. У них также есть возможность откатить обновление. Мой сайт также отслеживает каждую установленную версию ломбардов.
источник