Предложения по реализации очень простого средства обновления, которое проверяет наличие новой версии - PullRequest
3 голосов
/ 13 мая 2009

Я хочу добавить очень-очень простое автообновление в мои приложения. Я хочу начать с самой простой вещи, которая будет работать.

Есть предложения, как это сделать? Какие-либо предложения по улучшению (или альтернативе) опции ниже?

Вот один вариант, который я рассматриваю.

  1. Приложение отображает форму, которая предлагает проверить на новую версию, с опцией проверять каждые X дней.
  2. Если пользователь нажимает «проверить сейчас», запускает веб-страницу www.mysite.com / CheckNewVersion.asp? AppID = <>? AppVersion = <>
  3. В сценарии ASP есть список всех идентификаторы программ и в настоящее время доступные версии. ЭТО тогда показывает им либо страница с надписью "Нет нового Доступные версии "или" Новая версия с функциями / исправлениями XYZ "(и либо «Бесплатное обновление» или «оплатить здесь»).

Это дает 80% выгоды от автоматического обновления всего за 10% от стоимости. Если никто не нажимает на автообновление (и я подозреваю, что это возможно, так как люди не хотят беспокоиться), то бессмысленно делать это проще Нет никакого способа сделать это настолько простым, что им не нужно хотя бы нажимать кнопку «обновить».

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

Ответы [ 2 ]

2 голосов
/ 13 мая 2009

Мое предложение (после того, как я сам собрал несколько из них) - начать с немного другой системы. Попросите ваше приложение выполнить внутреннюю проверку, посмотрев на сервер статический файл XML, например: /AppVersion_[AppID].xml Файл xml просто описывает текущий публичный выпуск с текущим номером сборки / версии и, возможно, отметкой времени и полным путем до последнего двоичного файла, а также контрольной суммы MD5. Это сократит массу работы и сложности для начала.

Ваше приложение просто извлекает этот XML-файл и сравнивает информацию о версии в файле с его текущей версией. Если это новее, вы можете открыть дружественное диалоговое окно с просьбой обновить пользователя.

Если пользователь хочет обновить, опустите установочный двоичный файл из пути в файле XML, проверьте контрольную сумму MD5 и затем запустите ее с помощью shell execute. Это избавляет пользователя от необходимости загружать ваш файл и гарантирует, что файл загружается без каких-либо проблем.

Я бы предложил обновить VB6 до VB.NET по следующим причинам:

1) Волшебный элемент управления в .NET BCL, называемый WebClient, который позволяет получать содержимое строки URL-адреса так же просто, как однострочный вызов. Кроме того, WebClient загрузит файл в указанное место на диске за один вызов.

2) Фантастическая поддержка встроенного XML.

Ниже приведен базовый код VB.NET, который загрузит один из ваших программных продуктов и запустит его:

Dim TargetRemoteSetupFile As String = "http://www.bungalowsoftware.com/downloads.asp?programlist=/download/aphasia_tutor_1_and_2_outloud_install.exe"
Dim LocalDownloadPath As String = System.IO.Path.Combine(System.IO.Path.GetTempPath(), "BungalowSoftwareInstall.exe")

Dim FileDownloaderWebClient As New System.Net.WebClient()

Try
   FileDownloaderWebClient.DownloadFile(TargetRemoteSetupFile, LocalDownloadPath)
Catch ex As Exception
   System.Diagnostics.Debugger.Break()
   '...
Finally
   FileDownloaderWebClient.Dispose()
End Try

System.Diagnostics.Process.Start(LocalDownloadPath)
1 голос
/ 13 мая 2009

В Mac OS X платформа Sparkle очень популярна в приложениях для автоматического обновления. Это работает примерно так:

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

На сервере имеется XML-файл или скрипт, создающий такой файл с доступными версиями программного обеспечения и кратким обзором или журналом изменений для каждой версии. Когда нет доступных обновлений, приложение ничего не делает . Пользователь не информирован ВСЕ.

Когда доступно обновление, приложение предлагает: «Доступно обновление» с новым номером версии, журналом изменений и следующими кнопками: «Обновить» и «Пропустить эту версию».

Кнопки, конечно, говорят сами за себя.

...