Нужен исполнитель на разовую задачу на c/++
От: plr  
Дата: 23.11.12 15:49
Оценка:
Библиотека для авто обновления приложения — решили отдать на outsource — попробовать.

Проект будет выложен после его приемки на github.com по GNU-лицензии от "нашего" имени с участием исполнителя в процессе возможных доработок. По сути мы финансируем open source библиотеку, которая станет доступна всем.

Есть приложение, оно периодически обновляется, новая версия выкладывается Интернет.

Важно, что приложение работает без участия пользователя и пользователь не должен принимать участие процессе обновления.

Обновления могут включать в архив несколько файлов и в разных папках, относительно папки приложения.

Требуется написать библиотеку, которая будет использоваться в основном приложении.

Библиотека должна выполнять следующие функции:


1. Проверять и загружать новую версию по HTTP(S), если она есть. Проверка разовая, т.е. периодичность будет "задаваться" в основном приложении.

2. Считать CRC и сравнивать с исходным (передается в параметрах)

3. Распаковывать в отдельную временную папку

4. Делать резервную копию обновляемых файлов вместе с подпапками. Не всех, а именно тех, которые "пришли" в обновлении

5. Обновлять файлы контролируя доступность для перезаписи

6. Восстанавливать резервную копию файлов и удалять новые файлы

7. Вести лог файл (отдельный) за каждый день, включая его сворачивание (удаление "старых") за последние 30 дней

8. Отправлять на сервер http(s) get данные некоторых уровней логов

9. Контроль ошибок выполнения на всех участках, обслуживание исключительных ситуаций. Автоматический откат при их возникновении, например, ошибка при копировании файлов в середине обновления – надо произвести откат на исходную позицию.

10. Никакого GUI не нужно, только функции класса.

Всё должно быть реализовано только на чистом С/++ с компиляцией gcc под linux (а лучше кросплатформенно) с использованием open source библиотек, например, libcurl и т.п. кроме TCL, qt, boost и других крупных, т.к. приложение будет функционировать на слабом железе. Эти условия без вариантов.

Аккуратность оформления кода, управление памятью и другие очевидные правила должны быть реализованы.

В результате должна получиться библиотека и тестовое приложение библиотеки на несколько кейсов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.