Как сделать автообновление develnext
Перейти к содержимому

Как сделать автообновление develnext

  • автор:

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

Screenshot

Система обновлений для проектов 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

DevelNext / JPHP / PHP / Официальная Группа

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Олег Ковалёв

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

Privet Debil

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

Facebook

We are working to build community through open source technology. NB: members must have two-factor auth.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *