Name already in use
If nothing happens, download GitHub Desktop and try again.
Launching GitHub Desktop
If nothing happens, download GitHub Desktop and try again.
Launching Xcode
If nothing happens, download Xcode and try again.
Launching Visual Studio Code
Your codespace will open once ready.
There was a problem preparing your codespace, please try again.
Latest commit
Git stats
Files
Failed to load latest commit information.
README.md

Система обновлений для проектов DevelNext
- bundle — пакет с необходимым функционалом
- project-updater — исходники проекта Updater, который отвечает за обновление программы, его необходимо собрать в Updater.jar
- project-updateMe — исходники демо проекта
- demo — собственно демонстрация, запускаем UpdateMe.jar
About
Resources
Stars
Watchers
Forks
Releases 1
Packages 0
Contributors 2
Languages
Footer
© 2023 GitHub, Inc.
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Как сделать автообновление develnext


Захар Поченчук
запись закреплена

Роман Терентьев 

Роман Терентьев 

Владислав Аверкин 

Роман Терентьев
ответил Владиславу

Владислав Аверкин
ответил Роману

Владислав Аверкин
ответил Роману

Олег Ковалёв
ответил Владиславу

Privet Debil 

Захар Поченчук 

Иоанн Марков 
Updater – Система обновлений для проектов DevelNext

По мере созданий релизов собственного ПО многие разработчики встречаются с проблемой, когда у пользователей установлена неактуальная версия программы. Для DevelNext годных решений я ещё не видел, поэтому решил написать собственный Updater .


Принцип работы такой:
- 1. Рядом с исполнительным файлом приложения лежит утилита Updater.jar, которая будет отвечать за проверку и установку новых версий.
- 2. Программа после своего старта запускает Updater.jar, передаёт ему текущую версию и ждёт от него ответа (в фоновом потоке конечно же).
- 3. Updater проверяет в релизах репозитория github актуальную версию.
- 4. Если новых версий не найдено – updater закрывается, программа продолжает работу, пользователь никаких лишних сообщений не видит.
- 5. Если же найдена новая версия, updater спрашивает у пользователя разрешение (без ведома пользователя качать обновы не хорошо), получив добро, закрывает приложение, скачивает файлы с хаба, заменяет их и обратно запускает приложение.
- Необходимо завершить работу приложения перед обновлением, чтоб updater смог обновить файлы. Для этого updater отправляет сообщение в stdout, его получает приложение и завершает работу.
- Папка bundle – пакет с необходимым функционалом
- Папка project-updater – исходники проекта Updater, который отвечает за обновление программы, его необходимо собрать в Updater.jar
- Папка project-updateMe – исходники демо проекта
- Папка demo – собственно демонстрация, запускаем UpdateMe.jar
Собираем пакет
Для этого нужно перейти в папку bundle и выполнить команду:
Для командной строки Windows:
Соответственно вместо path_to_bundle – полный путь к папке bundle

Сборка пакета в командной строке
В папке bundle\build появится готовый пакет dn-updater-bundle.dnbundle, его нужно будет установить в DN.
Чтоб не ждать перезапуска среды, можно заново открыть проект – так выходит значительно быстрее, пакет при этом будет работать корректно.
Собираем приложение Updater.jar
Для этого открываем проект из папки project-updater
Из подключенных пакетов должны быть Zip (встроен в DN) и Updater (собранный нами ранее).
Открываем код модуля загрузчик, ищем строку
И меняем имя пользователя и название репозитория на своё. Для работы демо версии можно оставить эти значения.
Меняем внешний вид формы UpdateForm под себя. Собираем проект в jar приложение. На выходе получаем файл Updater.jar

Добавляем Updater к своему приложению
(на примере проекта updateMe)
Создаём новый проект (или открываем демо проект updateMe), подключаем пакет Updater.
Необходимо завести переменную (а лучше константу), где будет храниться текущая версия программы. Далее обращаемся к методу, который запустит процесс обновления, можно этот код поместить на событие появления главной формы.
Собираем программу. Можно в jar, можно в exe (не важно – portable или нет), но обязательно отметить галочку “объединить все исходники в один исполняемый файл”, иначе будут некорректно работать пути в программе, если она запущена от имени администратора. Про это я писал в статье про рабочие директории.

Параметры сборки exe приложения
Рядом с исполняемым файлом нужно скопировать файл Updater.jar. Запускаем, проверяем.


Т.к. обновлений нет, сообщений не видно
Выпускаем обновление
Указываем в проекте новую версию:

Проект с обновлённой программой
Собираем, открываем свой репозиторий, раздел releases, создаём новый релиз с указанием версии, заголовка, описания.



Добавляем версию описание, загружаем файлы
Updater поддерживает числовое значение версий, разделённых точкой, например, 1, 1.0, 0.1.2, 1.2.3.4
Если обновление состоит из нескольких файлов, их можно упаковать в zip-архив и он будет распакован в папке с программой.

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

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

После завершения обновления приложение снова запускается.
p.s. Постарался максимально прокомментировать код. В планах добавить бекап текущей версии перед обновлением, сверку контрольных сумм.
Ничего не работает! Скриншот кода и ошибки внизу.
В этом проекте нет формы с именем “Updatec”, ошибка явно после изменения кода
Форма UpdateС – моя. (UpdateCheck)
нашел баг! если UpdateMe переместить куда – то и запустить Update и согласиться с установкой обн., а потом перекинутый UpdateMe вернуть с снова с заменой обновленной, то при запуске будет требовать обн. если согласиться то текст “подготовка…” будет бесконечна, при этом не обновляясь и не будет удален файл .tmp. Вообщем это ОБХОД ОБНОВЛЕНИЙ. Решения есть?
Добрый день, после дейстивй с командой сборки пакета в CMD, командная строка примерно за секунду сама закрывается и файл пакета расширений не создается. Да и папки build изначально нет. Одним словом после последней команды командная строка закрывается и пакет не создается. Может вы собирете пакет для нас, чтобы сильно не мучаться, а добавите его в архив с файлами. ?…
tssaltan / develnext-updater Goto Github PK
A declarative, efficient, and flexible JavaScript library for building user interfaces.
Vue.js
Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
TensorFlow
An Open Source Machine Learning Framework for Everyone
Django
The Web framework for perfectionists with deadlines.
Laravel
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML.
Recommend Topics
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
server
A server is a program made to process requests and deliver data to clients.
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Visualization
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
Recommend Org
We are working to build community through open source technology. NB: members must have two-factor auth.