Теория программирования (Обновление ПО)

Похожие темы:

Введение

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

Почему это тяжело?

  На первый взгляд может показаться что все просто, нажал на кнопочку обновить или "оно" само обновилось. Даже у крупных софтверных компаниях этот вопрос вызывает кучу вопросов и проблем, основная и самая большая проблема это "процесс обновления полностью автоматический", если что-ото пойдет не так...в лучшем случае продукт просто не обновится, а худшем перестанет работать. Не сложно догадаться у кого с обновлениями проблемы... например у Google с Android, и да в 2017 году, этот процесс еще не поставили на "рельсы" в одной из самой популярной мобильной операционной системе, возможно в новой операционной системе от Google Fuchsia этот вопрос поправят. Так-же MPC-HC тоже отправляет на официальный сайт для загрузки новой версии и последующей установки. А это совсем не приятно =).

Насколько это важно?

  Зачем вообще заморачиваться с этим?
1. Это удобно для пользователя.
2. Если у вас лицензия, это поможет ее сохранить.
3. Всегда актуальная версия продукта, и пользователь даже не думает о том как его обновлять (с технической точки зрения).
4. Возможность быстро исправить ошибки.
  Это не большой список причин осуществить возможность обновления продукта. Ясное дело если это читай разработчик который разрабатывает продукт, под платформу в которой предусмотрен процесс автоматического обновления (например: Android, iOS...), это навряд будет интересно. Но если такой возможности нет, ее нужно добавить =).

Как лучше осуществить?

  Во первых все это лучше продумать на этапе проектирования, когда проект еще не начал создаваться, и сразу все сделать с учетом автоматического обновления продукта. Многое зависит от размера вашего проекта, если размер до 100 мегабайт можно обновлять проект полностью, если выше 100 мегабайт нужно обновлять его частями (естественно будет возможность его и полностью обновить, при необходимости). Обычно проект делится на две части, исполнимая часть и пользовательская.
 Исполнимая - это может быть папка\файл\группа файлов, данная часть отвечает за работу проекта.
 Пользовательская - это папка\файл\группа файлов, в этой части хранятся файлы и настройки пользователя.
При обновлении полностью заменяется Исполнимая часть, Пользовательская часть остается не тронутой, естественно в итоге пользователь получает новую версию проекта, при этом не потеряв свои настройки. Удобненько =)
А теперь как это можно осуществить!
1) Как делал я!
 У меня уже был готовый проект, который я захотел автоматически обновлять (самый не удобный исход). Проект у меня был портативным, это тоже создало некие проблемы (не удобно использовать сервисы\автозапуски\планировщики), потому взвесив все за и против, решил поступить следующим образом. Исполнимая часть проекта загружает пакет обновления и пакет программы обновления с сервера, в пакете обновления лежат файлы новой версии проекта, в пакете программы обновления (естественно) лежит программа обновления, после распаковки пакетов обновления, исполнимая часть запускает программу обновления, передавая ей всю необходимую информацию (пути к проекту, версии, куда сохранять лог и т.д.), программа обновления обновляет проект и все довольны =). Чем это удобно?, т.к. программа обновления загружается с сервера, в режиме онлайн можно повлиять на процесс обновления, это очень удобно.
2) Программа обновления рядом с исполнимой частью
 Это в принципе может показаться удобным вариантом, исполнимая часть запускает программу обновления, когда удобно пользователю, проект обновляется, но если все немного модернизировать получится мой вариант, который как по мне лучше.
3) Загрузчик
 Исполнимую часть запускает программа обновления, пока работает исполнимая часть программа обновления загружает новую версию проекта и подготавливает к запуску, для завершения обновления проекта, его нужно просто перезапустить (как браузер Google Chrome). Это пожалуй самый оптимальный вариант, пользователь даже не видит процесс обновления.

Итог

 Это пожалуй вся информация на данный момент, которой я хотел-бы поделится с вами. Как поступить вам, решайте сами. Спасибо за внимание!

                                                                                                                         с ув. Octanium

Комментарии

  1. Статья интересная и полезная, единственное замечание - все изложено в запутанной форме :)

    ОтветитьУдалить
    Ответы
    1. Учту ваше замечание. Торопился опубликовать, зря... :)

      Удалить

Отправка комментария