R0 CREW

Написание Updater'a

Привет всем.

Интересует вопрос написания апдейтера. Собственно, кто в курсе посоветуйте какие-то толковые материалы, я поискав нечего по сути не нашел.

Пока я себе представляю так:
На сервере я ложу новую версию моей программы, далее я пишу 2 след. модуля. Первый модуль (часть программы, к-ую нужно обновить) - это часть, к-ая отвечает за закачку на телефон новой версии программы, и передаю управление ей, новая программа берет и удаляет старую.
Второй модуль - находится на сервере и соотвесвенно принимает запросы на проверку наличия новой версии программы, и если она имеется отправляет ее, напр., по протоколу НТТР.

Собвственно, какие схемы обновления вы можете предложить или то как я себе представляю так делают все? И еще какие советы можете дать, к-ые надо учесть для возможно какого-то дальнейшего развития, безопастности и тд…

Если это сильно важно, то данный апдейтер я хотел бы встроить как функционал апликухи, к-ая будет находится на телефоне под ОС Android, в будущем планируется портировать на iOS.

Спасибо за внимание!
Буду рад любой вашей помощи.

С уважением,
coldfire

Все довольно условно и зависит от архитектуры твоей программы. Самое простое - это не заморачиваться и написать два исполняемых файла (программу и апдейтер), как собственно большинство и делают.

  1. При запуске “программа” проверяет, не появилась ли новая версия и если появилась запускает “апдейтер” и завершает свою работу.
  2. “Апдейтер” в свою очередь, так же проверяет наличие новой версии и если она есть загружает ее. Затем проверяет: висит ли процесс обновляемой программы в списке процессов? И если да, то просит пользователя выйти из программы (приложения), либо завершить ее процесс.

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

Информацию по этой теме, наверняка можно найти в каких нибудь статьях или книгах по модульному программированию (если их кто-то пишет). Я таких книг/статей не читаю(л), поскольку вся модульность в основном сводится к умению разбить программу на отдельные части, с последующим их вынесением в отдельные модули. То как эти модули будут загружаться и взаимодействовать - дело уже десятое, поскольку зависит от используемого языка программирования и платформы, на которой все это хозяйство будет разворачиваться.

Добрый день.

root, спасибо за то, что отписался.

Хотелось бы избавиться только от одного, что бы это все таки не была отдельная программа апдейтер, а то пользователи нынче сильно боятся почему-то таких вещей…=) хотя может этот апдейтер можно запихнуть будет в apk, не в курсе?

С уважением,
coldfire

Последнее время лучше не использовать для апдейтеров отдельные процессы, антивирусы неадекватно очень на них реагируют

V3T я в целом так бы и хотел сделать, что бы грубо говоря у меня была ф-ия updateProgram() и в ней делалось все что надо для того, что бы запихнуть новую версию… Но вот тогда вопрос состоит в том как удалить мне старую версию проги, если она по сути все еще весит в памяти и Андроид мне не даст ее удалить. Тогда получается, что надо делать костыль вида, что бы то приложение я закачал, при первом своем запуске чистило предидущее приложение. Или нет?

Думаю да, этот костыль будет не сильно сложен в реализации

Он не сложен, но это как-то не правильно. Не серьезно так делать, пока немерее так не должно быть! Или я ошибаюсь…
Я тут полазил и вообще есть такой слух, к-ый надо бы проверить:

Без понятия, андроидом еще не пользовался, поэтому не знаю как он работает, не говоря уже о том чтобы писать под него что-то. Хотя, у меня недавно появилась идея: написать одно полезное приложение, которое бы работало на ПК и Android. А заодно выучить еще один новый язык для себя Java (тем более, что у человека знающему С/С++ & Python это займет максимум несколько дней, которые в основном уйдут на ознакомление с библиотеками и функциями). Поэтому сейчас жду появления Galaxy Tab 2 (в наших магазинах) и там уже буду разбираться, что к чему. А пока сорри.

Какие бы ни были костыли - это не хорошо. Делать все нужно исходя из имеющихся возможностей.

Я тоже загуглил, так оно и есть: http://lifehacker.com/5828576/how-to-update-your-apps-on-android-and-iphone

По поводу языка программирования, то на сколько мне известно, то можно писать используя C/C++ ( Android NDK ), а дальше используя JNI ( прослойка для вызова кода написанного на С/С++) в коде Java, т.е. по сути и Java особо изучать не придется…

А так проверил отдельно, не программно, то да - Андроид ОС сам за тебя обновляет, главное, что бы были одинаковые названия…

Можно и на Питоне писать, как впрочем и на других скриптовых языках, но я предпочитаю использовать наиболее предпочтительный язык. Для Андроида - это Ява.

А новый язык никогда не помешает.