1 / 1 / 0
Регистрация: 05.11.2015
Сообщений: 20

Как правильно обновлять приложение ?

09.04.2020, 13:35. Показов 2317. Ответов 23
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток! У меня есть приложение на C++, но столкнулся с такой проблемой, как правильно обновлять приложение ? Сейчас приложение при каждом запуске шлет на сервер запрос с версией, если версия старая, то приложение скачивает с ftp сервера архив с обновлениями, после чего приложение закрывается и запускает не большое приложение на pyhton, которое распаковывает этот архив. В архиве обновления содержатся только те файлы, которые нужно обновить. Проблема в том, что если у пользователя будет первая версия, а обновлений уже больше 50 будет, то приложению придется качать 50 архивов, а потом их распаковывать. Так вот вопрос, как лучше организовать обновление? Стоит ли хранить обновления в архивах на сервере или есть какой то другой способ? Спасибо.
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.04.2020, 13:35
Ответы с готовыми решениями:

Как правильно завершить приложение?
Close(); //или Application->Terminate(); как правильно?

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

Как правильно собрать приложение Qt с динамической библиотекой?
Доброго времени суток. Есть собранная статически библиотека. Исходники, .a-файл тоже имеются. Теперь нужно используя эту библиотеку...

23
12.04.2020, 15:24
Студворк — интернет-сервис помощи студентам

Не по теме:

Цитата Сообщение от hoggy Посмотреть сообщение
придется дополнительно реализовывать миграцию
мб вопрос глупый, но разве вы не говорили, что в пределах мажорного релиза обратная совместимость сохраняется?
разве в таком сценарии нельзя с 1.3.0 откатиться до 1.0.0 и наоборот?
или это вы не про "каноничный" способ версионирования?

0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
12.04.2020, 15:56
Цитата Сообщение от GbaLog- Посмотреть сообщение
мб вопрос глупый, но разве вы не говорили, что в пределах мажорного релиза обратная совместимость сохраняется?
разве в таком сценарии нельзя с 1.3.0 откатиться до 1.0.0 и наоборот?
или это вы не про "каноничный" способ версионирования?
ты имеешь ввиду: сможет ли компонент версии 1.3.0 работать с бд версии 1.0.0?
технически - должен.

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

другими словами, что бы новая фича заработала, нужно обновить бд.
а иначе компонент 1.3.0 на самом деле будет работать в режиме совместимости, так,
словно он - 1.0.0
0
19505 / 10108 / 2463
Регистрация: 30.01.2014
Сообщений: 17,828
12.04.2020, 16:22
Цитата Сообщение от hoggy Посмотреть сообщение
у нас есть уже готовые, и проверенные временем процедуры пошагового обновления:
с 1.0.0 до 1.1.0, далее с 1.1.0 до 1.2.0, и тд. до самой последней версии.
Кстати, я думаю никто не помешает использовать эти процедуры совместно с описанным мной способом. Этим способом можно обновлять только дистрибутив, а данные обновлять скриптом, который выполняет пошаговое обновление как обычно.

Добавлено через 10 минут
Да, кстати, мне кажется, что такой скрипт должен быть в любой случае.
Представим себе типичную ситуацию, ретрограда-пользователя, который 5 лет сидел на первой версии, а потом решил обновиться до последней, потому что в ней появилась критическая для него фича.
И что ему делать? Вот он скачал установочный пакет последней версии, допустим 10. И ставит его. И что ему система установки должна предложить, чтобы он скачал-поставил вторую версию, потом третью, потом четвертую и т.д., для того, чтобы БД правильно обновилась? Я думаю - нет. В последнем пакете уже должна быть доступна эта процедура, либо одномоментного, либо пошагового обновления данных.
А мой способ - это лишь вариант получить установочный пакет последней версии, скачивая при этом не условные 50, а условные 2 мегабайта.
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
12.04.2020, 16:34
Цитата Сообщение от DrOffset Посмотреть сообщение
Кстати, я думаю никто не помешает использовать эти процедуры совместно с описанным мной способом. Этим способом можно обновлять только дистрибутив, а данные обновлять скриптом, который выполняет пошаговое обновление как обычно.
примерно так оно у нас в настоящий момент и устроенно.
сам софт сразу нужной версии выкачивается.

а бд специальный скрипт в цикле шаг за шагом обновляет.
собственно "скрипт" - это и есть наша "процедура миграции".

я просто думал: может есть какие то готовые продвинутые решения.
но никто ж кроме меня не знает, что там в базе нужно поменять.
и если я сам вручную код не напишу, код миграции сам себя не напишет.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
12.04.2020, 16:34

Как правильно обновлять Android Studio
Здравствуйте коллеги. При обновлении студии создаются старые копии версий(см. рис.) 1)Можно ли их удалить и помешает ли это работе...

Как правильно обновлять свои OCX
При добавлении в свою OCX MyOcx.ocx новых контролов при последующей попытке подцепить ее через Refrences к новому проекту часто получаю...

Как правильно обновлять картинку captchI ?
в php коде есть стандартная функция автоматического создания рандомной картинки из заданных букв и чисел при нажатии на регистрацию...

Как правильно обновлять токен на стороне сервера?
У продукта, с которым необходима интеграция, есть API, который по кредам дает токен, рефреш токен и когда они экспайрятся. Мы со...

Как правильно обновлять элемент из другого потока?
В отдельном потоке подключаюсь с БД ... event_console?.Invoke("Getting Connection ..."); ... try { ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
24
Ответ Создать тему
Опции темы

Новые блоги и статьи
По какой причине рабочий алгоритм может называться бредом?
Hrethgir 05.08.2026
3 мая мной была сделана публикация на Хабре авторского алгоритма итеративного обхода дерева "эстафета хвоста". Удаление публикации видимо произошло из-за отзывов об алгоритме такого рода Ну, я тебе. . .
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С. Задача: Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
Как ИИ начал спорить и врать (возможно почуяв опасность для себя от индустрии - уход от электроники).
Hrethgir 04.08.2026
Недельный диалог, на фоне событий с НПЗ. Да, из спирта можно получать бензин, и это не сложно. Но потом в схеме я решил избавиться от насоса, при этом полностью сделав контроль подачи спирта в. . .
Термопринтер QR701
Argus19 03.08.2026
Термопринтер QR701 Купил два термопринтера QR701. На сэлф-тесте написано: Language: PC936 (GB18030). Что означает, что принтеры могут печатать только латиницу и китайские иероглифы. Так же. . .
Создание формы заимствованного документа
Maks 03.08.2026
Задача: Необходимо создать собственную форму заимствованного документа. На форме должен быть реквизит "Покупатель", а также табличная часть со следующими реквизитами: - Расчетный счет покупателя. . .
Задача предоставления скидок покупателям
Maks 03.08.2026
Задача: В документе "Продажи" необходимо реализовать функционал предоставления скидок покупателям. Скидка должна автоматически рассчитываться и подставляться в соответствующее поле при выборе. . .
Почему SEO не начинается с ключевых слов: что проверить до написания текстов
Neotwalker 01.08.2026
Когда владельцу сайта предлагают заняться SEO, первым шагом часто становится сбор запросов и написание текстов. Логика кажется понятной: 1. Находим ключевые слова. 2. Добавляем их на. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru