Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
1 / 1 / 0
Регистрация: 05.11.2015
Сообщений: 20

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

09.04.2020, 13:35. Показов 2290. Ответов 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
19501 / 10106 / 2461
Регистрация: 30.01.2014
Сообщений: 17,825
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
Ответ Создать тему
Новые блоги и статьи
Алиса нашла кучу ошибок компиляции и запуска в проекте, который без проблем компилировался и запускался)))
anaschu 30.06.2026
Я пока посмеюся, но завтра проверю. А вообще интерсно. Дал алисе файл, в котором точно нет ошибок компиляции и запуска, и попросил их найти. Нашла кучу))) Критические ошибки, мешающие компиляции и. . .
сукцессия 16. Общий обзор, в основном что бы другие ии поняли
anaschu 29.06.2026
# Передаточный документ: модель микоризной сукцессии (для нового чата) Этот документ предназначен для того, чтобы новый чат Claude мог продолжить работу без необходимости заново разбираться в. . .
сукцессия 15 неявная схема
anaschu 29.06.2026
Алиса Калибровка параметров симбиотической модели: технический обзор Содержание: Введение Постановка проблемы Технические аспекты реализации Процесс внедрения изменений
сукцессия 14. Обновленная схема модели
anaschu 28.06.2026
ГЛОБАЛЬНАЯ ОПИСАТЕЛЬНАЯ СПЕЦИФИКАЦИЯ ЭКОСИСТЕМНОЙ МОДЕЛИ «SOIL CHEMISTRY & MYCORRHIZA 2. 0» https:/ / ibb. co/ NnkGpfMd Представленная интегрированная схема описывает непрерывную нелинейную. . .
сукцессия 13. Питон модель трехзонного мицелия, пока что в основном арбускулярного
anaschu 28.06.2026
## Разработка агентной модели микоризной сукцессии: от выявления артефактов к созданию комплексной системы ### Аннотация Представлено исследование по разработке агентной модели микоризной. . .
сукцессия 12. краткий список проверок модели перед запуском.
anaschu 27.06.2026
Скрытые отказы в моделях систем динамики (SD-models) экологических систем: два случая из практики Контекст Разбирался прототип модели систем динамики (SD-модели) микоризной сукцессии: пять. . .
Сукцессия 11. Проверка орудий перед войной: разработка через тестирование
anaschu 27.06.2026
Как не дать модели соврать самой себе: проверки для симуляции микоризной сукцессии Введение Когда вы строите математическую модель живой системы — грибов, растений, почвы — главная опасность. . .
10 сукцессия. Питон код войны грибов и растений
anaschu 27.06.2026
import numpy as np class PlantAgent: def __init__(self, name, strategy, initial_biomass): self. name = name self. strategy = strategy # "greedy" (широколиственные) или. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru